なぜ出力が違うのですか?
echo $( (( 5+5 )) )
echo $((( 5+5 )))
10
答え1
bash
有効な状態でコマンドを実行しますset -x
。
$ set -x
$ echo $( (( 5+5 )) )
++ (( 5+5 ))
+ echo
$ echo $((( 5+5 )))
+ echo 10
10
$ echo $(( ( 5+5 ) ))
+ echo 10
10
ご覧のとおり、$(...)
最初のコマンドのコマンドはコマンドの代替として扱われます。このコマンドは実行コマンドを置き換えます((5+5))
。これは出力のない算術評価なので、引数を使用せずに改行echo
文字のみを使用します。
他の場合(そして私が追加した追加ケース)は$((...))
算術拡張として扱われます。この計算の値は、(5+5)
その計算の結果に置き換えられます。
bash
混乱を避けるために、上記の最後のコマンドで示したように、パーサーが使用する構文グループ化の種類を確認できるようにスペースを使用することをお勧めします。