【问题标题】:Bash: let statement vs assignmentBash:让语句与赋值
【发布时间】:2013-09-09 18:46:29
【问题描述】:

分配给var=foo 之类的变量和使用let var=foo 之类的let 有什么区别?还是var=${var}barlet var+=bar 之类的情况?每种方法的优缺点是什么?

【问题讨论】:

    标签: linux bash unix


    【解决方案1】:

    let(( )) 完全一样,它用于算术表达式。在let(( )) 之间有almost no difference

    您的示例无效。 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
    

    【讨论】:

    • 一个区别是let 允许某种程度的间接:a=b; b=3; let $a+=1; echo $b;let 的参数在被评估之前会进行参数扩展(我认为我在您发布的链接中没有提到)。
    • 实际上,从头开始。我以为在a=b; b=3 之后,(( a+=1 ))(( $a+=1 )) 这两个命令是等价的,但事实并非如此。第一个似乎将a 替换为b 的值,然后递增,保持b 的值不变。第二个增量b,同时将a 设置为字符串b
    猜你喜欢
    • 2011-10-24
    • 2012-03-22
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2011-10-30
    相关资源
    最近更新 更多