意外的文件结束Bash(最后一行)[重复]

问题描述 投票:2回答:3

这个问题在这里已有答案:

我尝试了几乎所有这里建议的解决方案但是这个非常简单的代码仍然显示出这个错误

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

bash shell
3个回答
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

0
投票

尝试将标题放入脚本中

#!/bin/bash

这样linux会自动将脚本解释为bash脚本。


0
投票

我发现了问题 - 文件中的回车字符。

我在Windows(文本板)中键入脚本并在Linux上执行它。 Windows上的编辑器以\r\n结束行;当在Linux上运行脚本时,\r的出现正在产生问题。

使用vi作为编辑器帮我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.