这个问题在这里已有答案:
我尝试了几乎所有这里建议的解决方案但是这个非常简单的代码仍然显示出这个错误
x=1
echo $x
while [$x -le 5];
do
echo $x
x=$(($x+1))
done
:
-sh-4.1$ sh test1.sh
1
test1.sh: line 10: syntax error: unexpected end of file
第10行是“完成”命令之后的一行。我知道它与空格有关,但我的程序中没有任何空格。
你必须在[ ]
周围有空格来完成整个脚本的工作,所以:
x=1
echo $x
while [ $x -le 5 ]; do
# ^ ^
# space space
echo $x
x=$(($x+1))
done
或使用bash算术:
x=1
echo $x
while ((x < 5)); do
echo $((x++))
done
尝试将标题放入脚本中
#!/bin/bash
这样linux会自动将脚本解释为bash脚本。
我发现了问题 - 文件中的回车字符。
我在Windows(文本板)中键入脚本并在Linux上执行它。 Windows上的编辑器以\r\n
结束行;当在Linux上运行脚本时,\r
的出现正在产生问题。
使用vi
作为编辑器帮我解决了这个问题。