web-dev-qa-db-ja.com

ドル記号の後に角括弧$ [...]が続くとbashで何を意味しますか?

_$[expr]_は$((expr))と同様に算術展開を実行するようです。しかし、bashのマニュアルに_$[_についての記載はありません。このコマンドは結果を与えません:

_gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
_

この演算子とは何ですか?その動作はどこでも標準化されていますか?

私のbashバージョン:GNU bash、バージョン3.2.51(1)-release(x86_64-Apple-darwin13)

35
AmadeusDrZaius

古いbashソースはこちら です。特に bash-1.14.7.ta​​r.gz をダウンロードしました。 _documentation/bash.txt_には以下が含まれます。

算術展開

算術展開では、算術式の評価と結果の置換が可能です。算術展開には2つの形式があります。

_     $[expression]

     $((expression))
_

_$[_への参照は、 bash-doc-2.0.tar.gzダウンロード の_doc/bash.html_に含まれておらず、NEWSファイルには次のように記述されています。

_$[...]_算術展開構文は、$((...))に代わってサポートされなくなりました。

$((...))も算術展開の 標準構文 ですが、元のBash実装よりも後に標準に追加されている可能性があります。

ただし、_$[...]_はBash 5.0ではまだ機能するように見えるため、完全に削除されていません。

19
Digital Trauma

GNU bashメーリングリスト のスレッドでは、$[構文は、$((がすでに使用されているため、推奨されなくなった初期の構文であると述べていますKorn Shellによる。

this site によると、bash 3.2.48のマニュアルには$[構文への参照が含まれていました。したがって、この参照は3.2.51で削除されたと考えられます。

27
AmadeusDrZaius