我可以在 if 中添加超过 1 个条件吗?

我可以在 if 中添加超过 1 个条件吗?

是否可以在 if 语句中放置 1 个以上的条件?

if  [ "$name" != "$blank" && "$age" == "$blank" ]; then

是否可以?如果不是我该怎么做?

答案1

通过[ expression ](POSIX 标准)语法,您可以使用以下内容:

if [ "$name" != "$blank" ] && [ "$age" = "$blank" ]; then
   echo true
fi

但在[[ expression ]]语法中你可以使用这两个条件:

if [[ $name != "$blank" && $age == "$blank" ]]; then
   echo true!
fi

[[over的两个优点[

  1. 不会对 进行分词或全局扩展,因此许多参数不需要加引号( and[[的右侧除外,如果不加引号,则将其解释为模式)。==!=
  2. [[更易于使用且不易出错。

缺点[[:它仅在 ksh、bash 和 zsh 中受支持,在普通的 Bourne/POSIX sh 中不受支持。

我的参考和比较的好[[页面[页面bash 常见问题解答

忘记在 bash/POSIX shell 中引用变量的安全隐患

答案2

还有一种可能性没有提到@SepahradSalour是使用-a运算符:

if [ "$name" != "$blank" -a "$age" = "$blank" ]; then

顺便说一句,请务必正确引用所有变量分别地

相关内容