sh 脚本中具有 3 个或更多表达式的布尔值
booleans with 3 or more expressions in sh script
如何将 "OR" 和 "AND" 与 3 个或更多表达式结合起来?为此我需要它:
(X 或 Y 或 Z)和 M
这是正确的吗?
if [ ["" = "X" -o "" = "Y" -o "" = "Z"] -a "" = "M"]
then
echo "correct"
exit 1
fi
A shell 实现不需要使用 -o
和 -a
作为布尔组合器,POSIX 规范不鼓励使用它们。相反,使用 ||
和 &&
加入 [
.
的多个调用
if { [ "" = "X" ] || [ "" = "Y" ] || [ "" = "Z" ]; } && [ "" = "M" ]; then
echo "correct"
exit 1
fi
请注意,[
是一个命令(test
的别名),而不是分组运算符,因此您不能像示例中那样简单地嵌套它们。事实上,]
没有实际用途; [
只需要它来完成幻觉。以上与
相同
if { test "" = "X" || test "" = "Y" || test "" = "Z"; } && test "" = "M"; then
echo "correct"
exit 1
fi
如何将 "OR" 和 "AND" 与 3 个或更多表达式结合起来?为此我需要它:
(X 或 Y 或 Z)和 M
这是正确的吗?
if [ ["" = "X" -o "" = "Y" -o "" = "Z"] -a "" = "M"]
then
echo "correct"
exit 1
fi
A shell 实现不需要使用 -o
和 -a
作为布尔组合器,POSIX 规范不鼓励使用它们。相反,使用 ||
和 &&
加入 [
.
if { [ "" = "X" ] || [ "" = "Y" ] || [ "" = "Z" ]; } && [ "" = "M" ]; then
echo "correct"
exit 1
fi
请注意,[
是一个命令(test
的别名),而不是分组运算符,因此您不能像示例中那样简单地嵌套它们。事实上,]
没有实际用途; [
只需要它来完成幻觉。以上与
if { test "" = "X" || test "" = "Y" || test "" = "Z"; } && test "" = "M"; then
echo "correct"
exit 1
fi