如果条件语法错误

时间:2013-06-10 18:40:22

标签: bash if-statement

我写了一个简单的脚本来检查数字是否在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行:[:缺少`]'

我哪里出错?

3 个答案:

答案 0 :(得分:4)

你需要一个空间:

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

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

bash -x scriptname.sh

答案 1 :(得分:2)

[]

周围需要一些空格
if [ $e -lt 30 ] && [ $e -gt 20 ]

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

*我说可以是因为它可能被一些shell内化了

答案 2 :(得分:2)

您需要在数字和括号之间留一个空格。第5行应该是

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