从文件运行时,命令行中相同的bash脚本不起作用

时间:2010-11-03 21:19:37

标签: bash cygwin

我正在尝试从cygwin中利用Bash脚本。当我在命令提示符下手动键入以下行时,一切正常,我看到屏幕上会打印出1到10之间的数字。

for i in {1..10}; do
    echo $i;
done

但是,如果我将脚本保存到文件(test.sh)并运行“./test.sh”,则会显示以下错误

./test.sh: line 1: syntax error near unexpected token `$'do\r''
'/test.sh: line 1: `for i in {1..10}; do

这对我来说似乎很奇怪。我想知道如何在命令行中运行相同的脚本,但不能从文件中运行。

谢谢, 德里克

3 个答案:

答案 0 :(得分:8)

\r是一个提示。您的文件可能具有CRLF(\r\n)行结尾,bash解释器无法正常处理。更改编辑器设置以使用Unix样式(\n)行结尾,或在文件上运行/usr/bin/dos2unix <file>以重置行结尾。

答案 1 :(得分:0)

使用unix文本编辑器vi的另一种可能的解决方案:

使用vi filename.sh命令在vi编辑中打开文件;

输入vi :set ff=unix命令;

使用:wq

保存文件

它将使用unix行结尾保存文件。

答案 2 :(得分:0)

我在Notepad ++中遇到同样的错误。从这篇文章中,我改变了编辑 - &gt; EOF Convertion,选择Unix / OSX格式,解决了这个问题。