1.1.1 ${value:-word}
如果变量value没有定义,则返回word,如果已经赋值则返回value变量的值
result=${jimyy:-UNSET}
echo $result
由于jimyy没有定义,因此返回UNSET
这种变量功能判断变量在没有定义时,确保变量始终有一个返回值。
1.1.2 ${value:=word}
当value没有定义时,则把word赋给value,然后通过${value:=word} 值把vaule值打印出来。
result=${jimyy:=UNSET}
echo $result
echo $jimyy
结果两个变量的值都是UNSET
这个变量功能是在变量没有定义时,给变量赋一个值,并且返回。
1.1.3 ${value:? "not defined"} 当value没有定义时,返回
bash: vaule : not defined
用于捕捉变量没有定义而导致的错误
1.1.4 ${value:+word} 当变量存在且非null时,返回word,否则返回null
用于测试变量是否存在
1.1.5 ${value-word} 如果value不存在,则用word替代。
变量替换功能在某些场景下有显著的功能。
当对变量进行操作时,最好先判断变量是否非空,比如对目录类型的变量进行rm -rf操作,必须要对这个变量进行判断,
因为如果变量为空,或者未赋值,则可能会从根目录或/root目录开始删除,影响是特别大,因此要慎重,因此在这种场景下可以使用变量替换功能,防止意外删除操作。
例如:
path1=/opt/server/backup/
find ${path1:=/tmp/} -name "*.tar.gz" -type f|xargs rm -f