我读了有关此事的bash man页面,但我不理解它们之间的区别。我测试了它们两个,它们似乎产生完全相同的结果。
如果未通过命令行参数设置值,我想要为变量设置默认值。
#!/bin/bash
var="$1"
var=${var:-word}
echo "$var"
如果$1
为空,则上面的代码回显word
,否则回显$1
的值。下面这行代码也是一样的:
#!/bin/bash
var="$1"
var=${var:=word}
echo "$var"
根据Bash man页面的描述,
${parameter:-word}
使用默认值。如果参数未设置或为空,则替换为word的扩展。否则,将替换为参数的值。
${parameter:=word}
分配默认值。如果参数未设置或为空,则将word的扩展分配给参数。然后替换参数的值。不能以这种方式分配位置参数和特殊参数。
它们是相同的吗?${parameter:=word}
只是做更多的事情吗?
${parameter:=word}
的语法不能用于位置参数和特殊参数。 - Fr0zenFyr