我在此阅读了bash手册页,但我不了解其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。
如果未通过命令行参数设置值,我想设置变量的默认值。
#!/bin/bash var="$1" var=${var:-word} echo "$var"
上面的代码回显wordif $1为null并回显$1if不为null的值。这样:
word
$1
#!/bin/bash var="$1" var=${var:=word} echo "$var"
根据Bash手册页,
${parameter:-word}使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。 ${parameter:=word}分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后替换参数的值。不能以此方式分配位置参数和特殊参数。
${parameter:-word}使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。
${parameter:-word}
${parameter:=word}分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后替换参数的值。不能以此方式分配位置参数和特殊参数。
${parameter:=word}
它们是相同的,${parameter:=word}只是更多?
使用var两次时,您看不到示例的差异,但是可以使用两个不同的变量来查看差异:
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