コマンドの置き換えとスペース

コマンドの置き換えとスペース

電卓として機能する理由:

[root@qabun02 ~]# echo $(( 5+2  ))
7

しかし、そうではありませんか?

[root@qabun02 ~]# echo $( (5+2) )
-bash: 5+2: command not found

私が見ることができる唯一の違いは、括弧の間にスペースがないことです。

返品:

[root@qabun02 ~]# echo $(who) root pts/0 2015-01-28 09:53 (10.40.0.115) [root@qabun02 ~]# echo $((who)) 0

((コマンド置換はおよびにどのように応答しますか( (

答え1

問題は、$(コマンド置換が有効になっているが$((算術拡張が有効になっていることです。

$( (5+2) )コマンドです。つまり、サブシェルのコマンドです(5+2)5+2しかし、これは有効なコマンドではありません。

$((who))who未定義の変数値(例:0)に置き換えられます。

答え2

バッシュから:

$(...)サブコマンドの置換を示します(「...」に似ています)。

$((...))算術評価の置換を表します。

${...}変数/パラメータの置換を示します。

は文字のアトミックシーケンスとして処理する必要があります$(((で終わる必要があります)、または))全く同じではありません。$ (($( ($ ( (

OBS:aは$直前に何もない場合(に対応し、ブロック内で算術評価の優先順位を指定するために使用できます(( 。$((...))$(( (3+4)*5 ))$(( 3+4*5 ))

関連情報