变量替换扩展:
功能 | 表达式 | 说明 |
使用默认值 | ${var:-word} | var存在且非空,则值为$var;若var未定义或为空值,则值为word,但var的值不变 |
赋予默认值 | ${var:=word} | var存在且非空,则值为$var;若var未定义或为空值,则值为word,且var被赋值word |
非空或未定义报错 | ${var:?word} | var存在且非空,则值为$var;若var未定义或为空值,则输出信息word,并终止脚本 |
使用另外的值 | ${var:+word} | var存在且非空,则值为$var;若var未定义或为空值,则返回空值,但var的值不变 |
变量替换扩展应用举例:
var1=; var2=unix
echo '${var1:-linux}'=${var1:-linux},'${var1}'=${var1}
//因为var1的值为空,所以${var1:-linux}返回linux,而${var1}的值也未变
{var1:-linux}=linux,${var1}=
echo '${var1:=linux}'=${var1:=linux},'${var1}'=${var1}
//因为var1的值为空,所以${var1:=linux}返回linux,而${var1}也赋值linux
${var1:=linux}=linux,${var1}=linux
echo '${var2:+linxu}'=${var2:+linux},'${var2}'=${var2}
//因为var2不为空,所以${var2:+linux}的为置换成了linux,但是${var2}的值不变
${var2:+linxu}=linux,${var2}=unix
var1=;
echo ${var1:?'错误,var1的值为空'}
//因为var1的值为空所以输出信息word
bash: var1: 错误,var1的值为空
echo ${var2:?'错误,var2的值为空'},'${var2}'=${var2}
//因为var2值不为空,所以仍显示原值unix,且${var2}的值不变
unix,${var2}=unix