バックティック内の変数の値はなぜ変わらないのですか?

バックティック内の変数の値はなぜ変わらないのですか?

これは私のテストコードです。

a=1
echo $a
echo `let ++a`
echo $a

私が見る出力は1、です1。 3行目が値を変更しないのはなぜですかa

答え1

`...` は $(...) と同じなので、サブシェルです。サブシェルで変更された変数は、サブシェルが閉じられると失われます。

答え2

次のように変数を追加できます。

a=1
((a++))
echo $a
2

これは、以下の「Cスタイル」の増分に近いです。

let a++

Ipor Sircerの返信を見るなぜあなたの方法は動作しませんでした!

関連情報