使用cygwin,我有
currentFold="`dirname $0`"
echo ${currentFold}...
输出... gdrive / c /而不是/ cygdrive / c /...
为什么?
答案 0 :(得分:2)
您的脚本以DOS格式存储,在每行末尾带有回车符后跟换行符(有时写成“\ r \ n”); unix在行的末尾仅使用换行符(“\ n”),因此bash错误地将部分命令的回车符。当它看到
currentFold="`dirname $0`"\r
它尽职尽责地将currentFold设置为“/ cygdrive / c / \ r”,当它看到时
echo ${currentFold}...\r
打印“/cygdrive/c/\r...\r”。最后的回车并不重要,但是中间的回车意味着“......”打印在“/ cy”的顶部,你最终得到“...... gdrive / c /”。
解决方案:将脚本转换为unix格式;我相信你会有dos2unix
命令,但你可能需要四处寻找替代方案。在紧要关头,您可以使用
perl -pi -e 's/\r\n?/\n/g' /path/to/script
(见http://www.commandlinefu.com/commands/view/5088/convert-files-from-dos-line-endings-to-unix-line-endings)。然后切换到以unix格式而不是DOS格式保存的文本编辑器。
答案 1 :(得分:0)