【问题标题】:if condition syntax errorif条件语法错误
【发布时间】:2013-06-10 18:40:22
【问题描述】:

我写了一个简单的脚本来检查一个数字是否在 20 到 30 之间:

while true 
do
echo 'enter a number between 20 and 30'
 read e
 if  [ $e  -lt 30] && [$e -gt 20 ]
 then
    echo ' you entered desired number' && break
fi
done

但是有如下错误:

第 5 行:[:缺少 `]'

我哪里做错了?

【问题讨论】:

    标签: bash if-statement


    【解决方案1】:

    这里需要一个空格:

    if [ $e -lt 30 ] && [ $e -gt 20 ]
                  ^      ^
                  |      |
                  |      |
    ---------------------
    

    始终尝试在调试模式下运行 bash 脚本。要在调试模式下运行脚本,只需在命令提示符下执行以下操作。

    bash -x scriptname.sh

    【讨论】:

      【解决方案2】:

      [] 周围需要一些空格:

      if [ $e -lt 30 ] && [ $e -gt 20 ]
      

      由于[ 可以是一个程序*,因此您必须像传递命令行参数一样对待它。

      * 我说可以,因为它可能会被某些 shell 内化

      【讨论】:

        【解决方案3】:

        数字和括号之间需要一个空格。第 5 行应为

        if  [ $e  -lt 30 ] && [ $e -gt 20 ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-09
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 2016-05-23
          • 2011-09-22
          • 2021-09-29
          • 1970-01-01
          相关资源
          最近更新 更多