我尝试了几乎所有这里建议的解决方案,但我的这个非常简单的代码一直显示此错误
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行是"完成"之后的一行。命令。我知道它与空格有关,但我的程序中没有任何空格。
答案 0 :(得分:3)
[ ]
周围必须有空格才能使整个脚本正常工作,所以:
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
答案 1 :(得分:0)
尝试在标题中添加标题
#!/bin/bash
这样linux会自动将脚本解释为bash脚本。
答案 2 :(得分:0)
我发现了问题 - 文件中的回车字符。
我在Windows(文本板)中键入脚本并在Linux上执行它。 Windows上的编辑器以\r\n
结束行;在Linux上运行脚本时,\r
的存在造成了问题。
使用vi
作为编辑器帮我解决了这个问题。