kos*_*kos 13
为什么“永远不要使用
-a
or-o
运算符”?
因为它们可能是模棱两可的,因此它们不符合 POSIX 标准:
指定 -a 和 -o 二进制原色以及“(”和“)”运算符的 XSI 扩展已被标记为过时。(根据正在评估的特定表达式,使用它们的许多表达式由语法模糊定义。)使用这些表达式的脚本应转换为下面给出的形式。尽管许多实现将继续支持这些过时的形式,脚本在处理用户提供的输入时应该非常小心,这些输入可能与这些和其他主要和运算符混淆。除非应用程序开发人员知道产生脚本输入的所有情况,否则调用如下:
test "$1" -a "$2"
应该写成:
test "$1" && test "$2"
我怎样才能“使用多个
[
命令&&
和||
shell 运算符)”?
通过进行多个测试并使用所述运算符链接它们;例如:
[ 0 -eq 0 -a \( 0 -eq 1 -o 1 -eq 1 \) ]
Run Code Online (Sandbox Code Playgroud)
可以重写为等价物:
[ 0 -eq 0 ] && ([ 0 -eq 1 ] || [ 1 -eq 1 ])
Run Code Online (Sandbox Code Playgroud)
或更好:
[ 0 -eq 0 ] && { [ 0 -eq 1 ] || [ 1 -eq 1 ]; }
Run Code Online (Sandbox Code Playgroud)