posix shell 中的比较运算符语法

问题描述 投票:0回答:1

我正在尝试理解 shell 命令语言的语法/语法(以便能够解析它),但我似乎找不到定义比较操作的语法的位置。

举个例子:

x=10
while [ $x -gt 0 ]
do
    #do something
    x=$(($x-1))
done

[ $x -gt 0 ]
的语法似乎没有在上面链接的规范中的任何地方定义。事实上,语法
[...]
没有出现在语法规则中,并且标点符号/运算符标记中缺少
]
。除了
[]
用于正则表达式括号以及
[
(而不是
]
)之外,规范没有过多说明此结构,“可能”需要在字符串中引用。

我的问题:

  1. 比较运算符是 POSIX 规范的一部分还是公认的扩展? (我希望是前者,因为上面的示例基于 POSIX shell 命令语言规范中给出的示例)
  2. 在哪里可以找到 shell 比较运算符的语法,或者一般的
    [...]
    (无论是在 POSIX 还是其他地方)?
sh posix
1个回答
0
投票

比较运算符是 POSIX 规范的一部分还是公认的扩展?

shell命令语言中没有特殊的比较语法。

[
是命令的名称,
$x -gt 0 ]
是它的参数,右方括号只是为了美观。命令
[ $x -gt 0 ]
也可以写成
test $x -gt 0

在哪里可以找到 shell 比较运算符的语法,或者通常的 [...]?

XCU 第 3 章 § 测试

© www.soinside.com 2019 - 2024. All rights reserved.