Что не так с моим сценарием оболочки

Я хочу взять локальный файл и закрепить его в другом временном месте. Ниже приведен мой код, который дает ошибку

path="/home/tft/Downloads/ie.js"
temp="/home/tft/Downloads/Temp"
name=$(basename "$path")
echo "$path"
echo "$name"
echo "$temp"
echo "$temp/$name.zip" #Its output is also weird!
zip -r -j "$temp/$name.zip" $path

Получение информации ниже:

/bin/bash test.sh

/home/tft/Downloads/ie.js
ie.js
/home/tft/Downloads/Temp
.zipjstft/Downloads/Temp 
 zip warning: name not matched: /home/tft/Downloads/ie.js

)zip . -i /home/tft/Downloads/ie.js -r -j /home/tft/Downloads/Temp
1 ответ

Ваш скрипт находится в формате DOS. Сначала конвертируйте его в формат UNIX:

sed -i 's|\r||' yourscript.sh

Или используйте dos2unix:

dos2unix yourscript.sh

Сообщения об ошибках, которые вы видите, вызваны наличием дополнительного символа (возврат каретки \r) в конце ваших значений. Это происходит, когда ваш формат файла не UNIX, а DOS, поскольку окончание строк DOS - это \r\n где UNIX имеет \n.

licensed under cc by-sa 3.0 with attribution.