bashの:$ [<計算式>]対$((<演算式>))
-
19-09-2019 - |
質問
私はbashの構文つまずいています:
foo=42
bar=$[foo+1] # evaluates an arithmetic expression
私はこのためにGoogleで検索すると、、私が見つけたます。http:// tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05するます:
3.4.6。算術展開
算術拡張は、算術式を評価し、その結果の置換を可能にします。算術展開の形式は
$(( EXPRESSION ))
...
可能な限り、bashのユーザーが角括弧付きの構文を使用しようとする必要があります:
$[ EXPRESSION ]
しかし、これが唯一の式の結果を計算し、何のテストを行いません...
私はbashのmanページでは、私が唯一のような$(( EXPRESSION ))
フォームを見つけることができます:
foo=42
bar=$((foo+1)) # evaluates an arithmetic expression
それでは、テストが$[...]
で行う$((...))
で実行されていない、または$[...]
は$((...))
のちょうどレガシーバージョンで?
解決
のbash v3.2.48のマンページは述べています:
[...]算術展開の形式は
$((expression))
の古い形式の$ [式は] を廃止されており、今後のバージョンで削除されます bashののます。
だから、$[...]
はもう使用すべきではない古い構文です。
他のヒント
@sthは完全に正しいです。そして、あなたは、より詳細な構文は賛成で、今ある理由について興味がある場合には、メーリングリストからこの古いメールをチェックします。
http://lists.gnu.org/archive/html/bug -bash / 2012から04 / msg00033.htmlする
の「早期の提案では、フォームの$ [表現]は使用されました。それは、機能的でした 現在のテキストの「$(())」に相当しますが、異議ました 提出1988 Kornシェルが既に実装されていたことを「$(())」と さらに別の構文を発明する全く説得力のある理由がありませんでした。 さらに、「$ []」構文が関与するマイナーな非互換性を持っていました case文のパターン。」の
私は根拠が好きであることを確認していない「誰かがすでに、より冗長にこれを行っている」が、そこはそれ、多分ケース文の問題は、私は、この曖昧な言及から想像していますより多くの魅力的だったか。