在OS X的bash脚本WHILE循环中使用多个条件

3

我想要做的基本上是从标准输入中读取一个变量,并检查该变量是否为1或2。如果不是,我希望通知用户并再次询问。我认为使用while循环是有意义的(我在bash shell中使用OS X Mavericks)。

对于单个条件,可以使用以下方法:

read result

while [[ "$result" != "1" ]];
do
echo $result
echo "You must enter 1 or 2. Please try again: "
read result
done
echo "success"

但是当我尝试进行或条件时:

while [[ "$result" != "1" ]] || [[ "$result" != "2" ]];

如果我在终端中输入1或2,那么这并不匹配输入的1或2。我也尝试过

while [[ "$result" != "1" ] || [ "$result" != "2" ]];

这会导致语法错误。

while [[ "$result" != "1" || "$result" != "2" ]];

这也不匹配1或2。 有人知道正确的语法吗?

1个回答

5

实际上,您需要使用 &&(AND)而不是 ||,因此请使用:

while [[ "$result" != "1" && "$result" != "2" ]];

这是因为你正在检查 $result 是否为 不是1且不是2


没关系,我们在编写代码时有时都会犯这些错误。 - anubhava
是的,但在BASH中,可以使用不同的括号来编写它。 - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接