“ var = $ {var:-word}”和“ var = $ {var:= word}”之间有什么区别?

hax0r_n_code:

我在此阅读了bash手册页,但我不了解其中的区别。我测试了它们两个,它们似乎产生了完全相同的结果。

如果未通过命令行参数设置值,我想设置变量的默认值。

#!/bin/bash

var="$1"
var=${var:-word}
echo "$var"

上面的代码回显wordif $1为null,回显$1if不为null的值。这样:

#!/bin/bash

var="$1"
var=${var:=word}
echo "$var"

根据Bash手册页,

${parameter:-word}使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。

${parameter:=word}分配默认值。如果参数未设置或为空,则将单词的扩展分配给参数。然后替换参数的值。不能以此方式分配位置参数和特殊参数。

他们是一样的,${parameter:=word}只是更多吗?

纪尧姆:

使用var两次时,您看不到示例的差异,但是可以使用两个不同的变量来查看差异:

foo=${bar:-something}

echo $foo # something
echo $bar # no assignement to bar, bar is still empty

foo=${bar:=something}

echo $foo # something
echo $bar # something too, as there's an assignement to bar

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章