为什么反引号内的变量值不会改变?

为什么反引号内的变量值不会改变?

这是我的测试代码:

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

我看到的输出是1, 1。为什么第三行不修改 的值a

答案1

因为`...`相当于$(...),它是一个子shell。当子 shell 关闭时,子 shell 中更改的变量将会丢失。

答案2

您可以像这样增加变量:

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

这更像是“C 风格”递增,而不是:

let a++

请参阅 Ipor Sircer 的回答为什么你的方法没有成功!

相关内容