2

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

我哪里做错了?

4

3 回答 3

4

你需要一个空间:

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

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

bash -x scriptname.sh

于 2013-06-10T18:43:14.803 回答
2

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

if  [ $e  -lt 30 ] && [ $e -gt 20 ]
于 2013-06-10T18:43:14.913 回答
2

[您需要在and周围留一些空白]

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

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

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

于 2013-06-10T18:42:18.160 回答