shell参数替换
${parameter-default}, ${parameter:-default}
如果变量没有被设置,使用默认值。12echo ${username-`whoami`}# 如果变量$username还没有被设置,则把命令`whoami`的结果赋给该变量.
${parameter-default}
和${parameter:-default}
几乎是相等的。它们之间的差别是:当一个参数已被声明,但是值是NULL
的时候两者不同.
|
|
默认值结构可以在脚本中提供一个没有传递命令行参数时的默认值.123DEFAULT_FILENAME=generic.datafilename=${1:-$DEFAULT_FILENAME}# 如果没有指定值,下面的代码会使用filename变量的默认值"generic.data".
${parameter=default},${parameter:=default}
两种形式几乎相同,和上面的一样
${parameter+alt_value},${parameter:+alt_value}
如果变量parameter
设置,使用alt_value
作为新值,否则使用空字符串。
除了引起的当变量被声明且值是空值时有些不同外,两种形式几乎相等。
${parameter?err_msg}, ${parameter:?err_msg}
如果变量parameter
已经设置,则使用该值,否则打印err_msg
错误信息。
这两种形式几乎相同,仅有和上面所说的一点不同:带有:使当变量已声明但值是空值时不同.