【发布时间】:2020-11-24 18:35:32
【问题描述】:
function read_num(){
echo "Enter a lower limit"
read lower_limit
echo "Enter a upper limit"
read upper_limit
while [ [ $lower_limit -lt 1 ] || [ $lower_limit -gt $upper_limit ] ]
do
echo "Please enter again."
read_num
done
}
read_num
当我输入两个数字的下限和上限时,它会给出以下输出。
check.sh: line 6: [: too many arguments
第6行是while循环
while [ [ $lower_limit -lt 1 ] || [ $lower_limit -gt $upper_limit ] ]
【问题讨论】:
-
去掉外面的方括号。
[ ]表达式不嵌套,您不能在[ ]测试表达式中使用||(但您可以在它们之间 使用)。这几乎是 this question 的重复项(对于如何进行测试,几乎没有其他选项)。 -
[是一个命令。您正在尝试使用参数[、$lower_limit、-lt、1和]调用[命令。这争论太多了。如果您使用test而不是[,则可以轻松避免此类错误。作为语法的一部分,它不太可能被混淆。 -
除了语法错误,你拼错了
read uper_limit- 应该是upper_limit- 否则你会进入无限递归调用。