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