重击:let语句vs赋值 [英] Bash: let statement vs assignment
问题描述
分配给像var=foo
这样的变量和使用let这样的let var=foo
之间有什么区别?还是var=${var}bar
和let var+=bar
之类的情况?每种方法的优点和缺点是什么?
let
与(( ))
完全一样,它用于算术表达式. let
和(( ))
之间几乎没有区别./p>
您的示例无效. var=${var}bar
要将单词bar
添加到var
变量(这是字符串操作),let var+=bar
无效,因为它不是算术表达式:
$ var='5'; let var+=bar; echo "$var"
5
实际上,如果仅设置了变量bar
,则它是一个算术表达式,否则将bar
视为零.
$ var='5'; bar=2; let var+=bar; echo "$var"
7
What is the difference between assigning to a variable like var=foo
and using let like let var=foo
? Or cases like var=${var}bar
and let var+=bar
? What are the advantages and disadvantages of each approach?
let
does exactly what (( ))
do, it is for arithmetic expressions. There is almost no difference between let
and (( ))
.
Your examples are invalid. var=${var}bar
is going to add word bar
to the var
variable (which is a string operation), let var+=bar
is not going to work, because it is not an arithmetic expression:
$ var='5'; let var+=bar; echo "$var"
5
Actually, it IS an arithmetic expression, if only variable bar
was set, otherwise bar
is treated as zero.
$ var='5'; bar=2; let var+=bar; echo "$var"
7
这篇关于重击:let语句vs赋值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!