【问题标题】:Syntax Error in simple bash script简单 bash 脚本中的语法错误
【发布时间】:2012-06-11 11:36:06
【问题描述】:

您好,我是 bash 脚本的新手,我有一个不适合我的简单程序。我认为这是一个语法错误。

#!/bin/bash
#example1.sh
read Age
if ["$Age" -lt "18"]; then
    echo "You must go to school"
fi

当我输入 1 时,它显示 [1: command not found

【问题讨论】:

    标签: bash shell syntax


    【解决方案1】:

    你需要空格:

    if [ "$Age" -lt "18" ]; then
    

    (总结:Bash 语法规则令人震惊。)

    【讨论】:

    • if test "$Age" -lt 18; then 是更合理的语法。
    • if ((Age < 18)); then 是一种更合理的语法——空格是可选的。
    • [ 不是任何 Bourne shell 语法的一部分。 ((bash 语法的一部分,但不是许多其他 shell 语法的一部分。
    • 正如 William Pursell 所说,[ 不是语法的一部分([[ 也不是)它们是命令。命令必须被空格包围(或者在某些其他字符之前或之后,例如;& 等)。
    • @DennisWilliamson:同意。但是括号是命令而不只是语言语法的一部分这一事实令人震惊!
    【解决方案2】:
    #!/bin/bash
    #example1.bash
    
    read Age
    if(($Age < 18)); then
    echo "You must go to school"
    fi
    

    此代码在 bash 中运行时有效。 bash 和 sh 并不完全相同。

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多