![`[[ $a -lt 2 ]]` 和 `(( $a < 2 ))` 之间的区别](https://linux22.com/image/95775/%60%5B%5B%20%24a%20-lt%202%20%5D%5D%60%20%E5%92%8C%20%60((%20%24a%20%3C%202%20))%60%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
[[ $a -lt 2 ]]
使用和之间有什么显着差异吗(( $a < 2 ))
?
例如,其中一个是否比另一个更快或更符合 POSIX?
答案1
两者都不兼容 POSIX。在 POSIX shell 中,您可以使用命令[ "$a" -lt 2 ]
或表达 $(( a < 2 ))
。
在 中bash
,前者只是支持所[
支持的条件表达式超集的条件命令,而后者是一个独立命令,如果所包含的算术表达式非零,则以状态 0 退出,否则为 1。除了可读性外,如果使用得当,两者之间没有显着差异。