GNU/Linux >> Linux の 問題 >  >> Linux

$((Expr))の代わりに$ [Expr]を使用しますか?

算術展開を説明する段落で、Bashのユーザーガイドは式を評価する2つの異なる方法を明らかにしています。最初の方法は$(( EXPRESSION ))を使用します 2つ目は$[ EXPRESSION ]を使用します 。私が見つけた唯一の違いは次のとおりであるため、2つの方法は非常に似ているようです。

$[ EXPRESSION ] EXPRESSIONの結果のみを計算し、テストは行いません:

それでも、同じドキュメントで$[ EXPRESSION ]の使用が推奨されているため、興味をそそられます。 $(( EXPRESSION ))ではなく 。

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

実行するテストが少ない場合、なぜそれが必要なのですか?

承認された回答:

重複の質問(回答付き)

https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expression

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

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

 $((expression)) 

古い形式の$[expression]は廃止されました 今後のバージョンのbashでは削除されます。

したがって、$[…]は古い構文であり、もう使用しないでください

その答えに加えて:

http://manual.cream.org/index.cgi/bash.1#27

bashバージョンに関連する情報:

ここにbashのmanページに関するいくつかの情報があります(それぞれが参照しているバージョンに関する情報を見つけるのは難しいです):

OPリンク:

http://www.tldp.org/guides.html初心者向けBashガイド
バージョン:1.11
作成者:Machtelt Garrels、
最終更新日:2008年12月

sth(74.6k rep)quoting bash v3.2.48

https://stackoverflow.com/questions/2415724/bash-arithmetic-expression-vs-arithmetic-expressionから)

注:[]と(())の詳細については、こちらをご覧ください:http://lists.gnu.org/archive/html/bug-bash/2012-04/msg00033.html

見つけたリンク:

http://www.gnu.org/software/bash/manual/最終更新日2012年8月22日

http://www.gnu.org/software/bash/manual/bash.html#Arithmetic-Expansion


Linux
  1. BashスクリプトでCdを使用できないのはなぜですか?

  2. Bashスクリプトに.shまたは.bash拡張子を使用しますか?

  3. Expr算術の括弧:3 *(2 + 1)?

  1. Bash で eval を避ける必要があるのはなぜですか? 代わりに何を使用する必要がありますか?

  2. Bashを使用してHTTPヘッダーを解析するには?

  3. Bashでの$#の使用は何ですか

  1. cronjobsの代わりにsystemdタイマーを使用する

  2. Bash履歴コマンドの使用方法

  3. sftp を壊さずに .bashrc を使用する