shell特殊扩展变量
注意的是每个表达式内的冒号都是可选的,如果省略了表达式中的冒号,以为这每个定义中的‘为空或未赋值’部分改为‘未赋值’
shell特殊扩展变量演示
${正式变量:-备用变量}:- 的作用时如果变量值为空或未赋值,这回返回字符串替代变量的值,如果变量未定义,则返回备用的值,防止变量为空值或因未定义导致异常!
[root@6 tmp]# echo $test #test这个变量并未设置,所以输出的结果为空。
[root@6 tmp]# result=${test:-unset} #定义一个result的变量名,其中test没有值,则返回unset
[root@6 tmp]# echo $result #打印result的变量,因为test没有被赋值,所有返回unset
unset
${正式变量:=备用变量} :=的定义:如果正式变量值为空或未赋值,则设置这个变量未替补,并返回其值,位置变量和特殊变量不适用。
作用:基本同一个变量${正式变量:=备用变量},但该变量又额外给了正式变量赋值。(就是替补变量变成正式变量)
如图所示:
[root@6 tmp]# unset result #取消result的变量的定义
[root@6 tmp]# result=${test:=beiyong}
[root@6 tmp]# echo $test
beiyong
因为test的正式变量是空没有赋值的,所以用:-代表备用的参数直接顶替!
当变量result值里的变量没有被定义时,会给变量result赋值:=后面的内容,同时会把:=后面的内容赋值给变量result值里面没有定义的变量!
这个变量的功能可以解决变量没有定义的问题,并确保没哟㐉的变量始终有值!
${正式变量:?备用变量} 作用:如果正式变量值为空或未赋值,那么备用字符串将被作为标准输出否则输出变量的值!(了解)
${正式变量:+备用变量} 作用:如果正式变量未空或未赋值,则什么都不做,否则备用的字符串将替代正式变量的值。(了解)