我正在尝试从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
这对我来说似乎很奇怪。我想知道如何在命令行中运行相同的脚本,但不能从文件中运行。
谢谢, 德里克
答案 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格式,解决了这个问题。