32

私はちょうどbash構文に出くわしました:

foo=42
bar=$[foo+1] # evaluates an arithmetic expression

これをグーグルで調べたところ、 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05が見つかりました:

3.4.6. 算術展開

算術展開により、算術式の評価と結果の置換が可能になります。算術展開の形式は次のとおりです。

$(( EXPRESSION )) 

...

可能な限り、Bash ユーザーは角かっこを含む構文を使用するようにしてください。

$[ EXPRESSION ] 

ただし、これは EXPRESSION の結果を計算するだけで、テストは行いません...

私のbashのmanページでは、次の$(( EXPRESSION ))ようなフォームしか見つかりません:

foo=42
bar=$((foo+1)) # evaluates an arithmetic expression

では、どのテストが で実行されていない$[...]$((...))か、それとも の$[...]単なるレガシー バージョンなの$((...))か?

4

2 に答える 2

38

bash v3.2.48 のマンページには次のように書かれています。

[...] 算術展開の形式は次のとおりです。

     $((expression))

古い形式の$[expression] は非推奨であり、bash の今後のバージョンでは削除される予定です。

もう$[...]使用すべきではない古い構文も同様です。

于 2010-03-10T09:33:54.790 に答える
13
于 2012-08-11T03:06:55.650 に答える