意外的文件结束Bash(最后一行)

时间:2014-12-22 00:20:59

标签: bash shell

我尝试了几乎所有这里建议的解决方案,但我的这个非常简单的代码一直显示此错误

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行是"完成"之后的一行。命令。我知道它与空格有关,但我的程序中没有任何空格。

3 个答案:

答案 0 :(得分:3)

[ ]周围必须有空格才能使整个脚本正常工作,所以:

x=1
echo $x
while [ $x -le 5 ]; do
#      ^        ^
#    space    space
    echo $x
    x=$(($x+1))
done

或使用算术:

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作为编辑器帮我解决了这个问题。