Bash:让语句与赋值

IDD*_*DQD 54 unix linux bash

分配变量var=foo和使用let 之间的区别是什么let var=foo?或者像var=${var}barlet var+=bar?每种方法的优点和缺点是什么?

Ale*_*-A. 65

let确实做了什么(( )),它是算术表达式.目前几乎没有差别之间let(( )).

您的示例无效.var=${var}bar将要词添加barvar变量(它是一个字符串操作),let var+=bar是不会工作,因为它不是一个算术表达式:

$ var='5'; let var+=bar; echo "$var"
5
Run Code Online (Sandbox Code Playgroud)

实际上,它是一个算术表达式,如果只bar设置了变量,否则bar被视为零.

$ var='5'; bar=2; let var+=bar; echo "$var"
7
Run Code Online (Sandbox Code Playgroud)

  • 实际上,划伤那个.我认为在'a = b之后; b = 3`,两个命令`((a + = 1))`和`(($ a + = 1))`是等价的,但它们不是.第一个似乎用`b`的值替换`a`,然后递增,留下'b`的值不变.第二个增加"b",同时将"a"设置为字符串"b". (5认同)