bash test似乎不支持带有多个参数的逻辑测试:
[ expr1 -o expr2 -o expr3 -o expr4 ]nor
[[ expr1 || expr3 || expr3 || expr4 ]]'-a‘和'&&’也是如此。如何在没有太多嵌套大括号的情况下以整齐的方式编写这样的条件(特别是.当有更多的部件处于状态时)?
发布于 2017-10-06 20:41:34
下面的示例适用于我在Bash 4中的工作,例如
$ [ 1 = 1 -a 2 = 2 -a 3 = 3 -a 4 = 4 ] && echo True || echo False
True
$ [ 1 = 1 -a 2 = 2 -a 3 = 3 -a 4 = 0 ] && echo True || echo False
False
$ [ 1 = 1 -o 2 = 2 -o 3 = 3 -o 4 = 4 ] && echo True || echo False
True
$ [ 1 = 1 -o 2 = 0 -o 3 = 0 -o 4 = 0 ] && echo True || echo False
True
$ [ 1 = 0 -o 2 = 0 -o 3 = 0 -o 4 = 0 ] && echo True || echo False
False根据man [ (或man test):
对于两端,始终使用-a和-o进行评估。
要避免这种情况,请编写:[ -z abc ] && [ -w file ].
https://stackoverflow.com/questions/46605743
复制相似问题