【问题标题】:syntax error: unexpected end of file in if statement bash file [duplicate]语法错误:if 语句 bash 文件中的文件意外结束 [重复]
【发布时间】:2018-02-15 19:19:25
【问题描述】:

源代码:

#!/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.

【问题讨论】:

标签: bash


【解决方案1】:

echo 命令后面需要一个空格:echo"Fin del script";

所以:

echo "Fin del script"

下一次,在寻求人工帮助之前,请在http://www.shellcheck.net/ 上在线传递你的脚本(即使没有检测到这个特定错误,因为shell 认为echo"Fin del script"; 是一个未知命令...)

编辑

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

最好像这样使用bash arithmetic,它更具可读性且不易出错:

if ((arg >= 9)); then

【讨论】:

  • 感谢您的回答,我在shellcheck.net 中检查了我的代码,发现了其他错误: 第 3 行:if [ $1 -gt 9 ] ^-- SC2086:双引号以防止通配符和分词.我解决了这个新错误,输出是一样的。 ;(
  • 查看我编辑的帖子
【解决方案2】:

您需要在脚本末尾添加换行符,因为有时如果找不到换行符,事情就无法正常工作。见Why should text files end with a newline?

【讨论】:

  • 谢谢,但是我解决了这个错误并且输出是一样的 ;( ;(. #!/bin/bash echo "Parametro is $1" if [ "$1" -gt 9 ] then echo " entre al if" fi echo "Fin del script" 我在最后放了两个换行符。:(
  • 谢谢大家。我解决了我的错误。源代码没问题,但我在 Windows 中工作,在将我的 file.sh 放到服务器 linux 之后,这种情况出现了问题。如果我使用“vi filename.sh”在服务器中创建我的 file.sh 并输入相同的源代码,保存并在执行“bash filename.sh”后一切正常。
猜你喜欢
  • 1970-01-01
  • 2011-09-16
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多