语法错误:if语句bash文件中出现意外的文件结尾

语法错误:if语句bash文件中出现意外的文件结尾,bash,Bash,源代码: #!/bin/bash echo "Parametro is $1" if [ $1 -gt 9 ] then echo "entre al if"; fi echo"Fin del script"; 我的bash文件具有执行权限: -rwxrwxr-x 1 mzadmin mzadmin 108 Feb 15 13:07 test.sh 我运行bash文件的方式如下: bash test.sh 9 输出为: Parametro is 9 test.sh: li

源代码:

#!/bin/bash
echo "Parametro is $1"
if [ $1 -gt 9 ]
    then
    echo "entre al if";
fi
echo"Fin del script";
我的bash文件具有执行权限:

 -rwxrwxr-x 1 mzadmin mzadmin 108 Feb 15 13:07 test.sh
我运行bash文件的方式如下:

bash test.sh 9
输出为:

Parametro is 9
test.sh: line 8: syntax error: unexpected end of file.

echo
命令之后需要一个空格:
echo“Fin del script”

因此:

下次,在请求人工帮助之前,请联机传递脚本(即使未检测到此特定错误,因为shell think
echo“Fin del script”;
是未知命令…)

编辑 如果您没有输出,这是因为您在测试中使用了
-gt
(更大),但您需要
-ge
更大或相等

最好这样使用,它更具可读性,更不容易出错:

if ((arg >= 9)); then

您需要在脚本的末尾添加一个换行符,因为如果找不到换行符,有时会出现问题。请参见

发布的脚本没有第8行。@chepner有趣的是,错误确实会在第8行报告。在第7行有或没有终止换行符时都会发生这种情况。这可能是由于回车造成的。请参阅thaks以获取您的答案,我检查了我的代码,发现了其他错误:第3行:if[$1-gt 9]^--SC2086:双引号以防止全局搜索和分词。我解决了这个新错误,结果是一样的;(检查我编辑的postthaks,但我解决了这个错误,输出是相同的;(;)!/bin/bash echo“Parametro is$1”如果[“$1”-gt 9],那么echo“entre al if”fi echo“Fin del script”我在末尾加了两个新行(谢谢大家。我解决了我的错误。源代码还可以,但我在windows中工作,在将file.sh放到linux服务器之后,这个案例出现了一些问题。如果我在服务器中使用“vi filename.sh”创建file.sh,并键入相同的源代码,保存并在执行“bash filename.sh”后,一切正常。
if ((arg >= 9)); then