私はBashのマニュアルでこれを読んで驚きました。算術評価:
式内では、シェル変数はパラメーター拡張構文を使用せずに名前で参照することもできます。
私はそれを試してみましたが、実際にはvar
動作は次のとおりです$var
。
❯ var=9
❯ echo $(( var + 5 ))
14
❯ (( var < 10 )) && echo 'single digits!'
single digits!
これは悪い習慣と見なされますか?他のシェルに移植可能ですか、それともBashismですか?
答え1
$
算術評価に変数を使用しないことは悪い習慣とは見なされません。移植性の点では((…))
通常POSIXではないため、ダッシュなどのシェルでは機能しません。 zshとkshで動作します。一方、$((…))
POSIXにあり、すべての最新のshスタイルシェルで動作します。