![`[[ $a -lt 2 ]]` と `(( $a < 2 ))` の違い](https://rvso.com/image/95775/%60%5B%5B%20%24a%20-lt%202%20%5D%5D%60%20%E3%81%A8%20%60((%20%24a%20%3C%202%20))%60%20%E3%81%AE%E9%81%95%E3%81%84.png)
[[ $a -lt 2 ]]
との使用には大きな違いがありますか(( $a < 2 ))
?
たとえば、どちらかが他方よりも高速であるか、または POSIX に準拠しているでしょうか?
答え1
どちらもPOSIX互換ではありません。POSIXシェルでは、コマンド[ "$a" -lt 2 ]
または表現 $(( a < 2 ))
。
ではbash
、前者は が[
サポートする条件式のスーパーセットをサポートする条件コマンドにすぎず、後者は、囲まれた算術式がゼロ以外の場合はステータス 0 で終了し、それ以外の場合はステータス 1 で終了するスタンドアロン コマンドです。読みやすさ以外、適切に使用した場合、この 2 つに大きな違いはありません。