`[[ $a -lt 2 ]]` 和 `(( $a < 2 ))` 的区别

Ale*_*ura 0 bash test

using[[ $a -lt 2 ]]和之间有什么显着区别(( $a < 2 ))吗?

例如,其中一个比另一个更快或更符合 POSIX 吗?

che*_*ner 5

两者都不兼容 POSIX。在 POSIX shell 中,您可以使用命令[ "$a" -lt 2 ]或表达式 $(( a < 2 ))。

在 中bash,前者只是支持条件表达式的超集的条件命令[,后者是一个独立的命令,如果封闭的算术表达式为非零,则以状态 0 退出,否则为 1。除了可读性之外,如果使用得当,两者之间没有显着差异。