我正在尝试理解 shell 命令语言的语法/语法(以便能够解析它),但我似乎找不到定义比较操作的语法的位置。
举个例子:
x=10
while [ $x -gt 0 ]
do
#do something
x=$(($x-1))
done
[ $x -gt 0 ]
的语法似乎没有在上面链接的规范中的任何地方定义。事实上,语法 [...]
没有出现在语法规则中,并且标点符号/运算符标记中缺少 ]
。除了 []
用于正则表达式括号以及 [
(而不是 ]
)之外,规范没有过多说明此结构,“可能”需要在字符串中引用。
我的问题:
[...]
(无论是在 POSIX 还是其他地方)?比较运算符是 POSIX 规范的一部分还是公认的扩展?
shell命令语言中没有特殊的比较语法。
[
是命令的名称,$x -gt 0 ]
是它的参数,右方括号只是为了美观。命令 [ $x -gt 0 ]
也可以写成 test $x -gt 0
。
在哪里可以找到 shell 比较运算符的语法,或者通常的 [...]?