我的shell脚本有什么问题

时间:2014-07-22 08:47:11

标签: bash shell unix

我想获取一个本地文件并将其压缩到其他临时位置。 以下是我的代码,它给出了错误

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 个答案:

答案 0 :(得分:2)

您的脚本是DOS格式。首先将其转换为UNIX格式:

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

或使用dos2unix

dos2unix yourscript.sh

您看到的错误消息是由于在值的末尾有一个额外的字符(回车\r)。当文件的格式不是UNIX而DOS时,会发生这种情况,因为DOS的行结尾是\r\n,其中UNIX只有\n