Bash:让声明VS分配

分配给像var=foo这样的variables和使用let let var=foo之间有什么区别? 还是像var=${var}barlet var+=bar ? 每种方法的优点和缺点是什么?

let (( ))做什么,它是算术expression式。 let(( )) 几乎没有区别 。

你的例子是无效的。 var=${var}bar将要添加单词barvarvariables(这是一个string操作), let var+=bar不起作用,因为它不是一个算术expression式:

 $ var='5'; let var+=bar; echo "$var" 5 

实际上,它是一个算术expression式,如果只设置了variablesbar ,否则bar被视为零。

 $ var='5'; bar=2; let var+=bar; echo "$var" 7