Linux变量替换技术

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

原文地址:https://www.cnblogs.com/nanshanjushi/p/11546644.html