是否可以在 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的两个优点[
:
- 不会对 进行分词或全局扩展,因此许多参数不需要加引号( and
[[
的右侧除外,如果不加引号,则将其解释为模式)。==
!=
[[
更易于使用且不易出错。
缺点[[
:它仅在 ksh、bash 和 zsh 中受支持,在普通的 Bourne/POSIX sh 中不受支持。
我的参考和比较的好[[
页面[
页面bash 常见问题解答
答案2
还有一种可能性没有提到@SepahradSalour是使用-a
运算符:
if [ "$name" != "$blank" -a "$age" = "$blank" ]; then
顺便说一句,请务必正确引用所有变量分别地。