设置变量默认值,参数默认值, 自动赋值
转自:/p/98636736
默认参数(变量默认值)
if 繁琐方式
if [ ! $1 ]; then$1='default'fi
-
变量为null
取默认值变量 为 null${vari-defaultValue}# 实践[root@yjx214 /]# unset name[root@yjx214 /]# echo ${name}[root@yjx214 /]# echo ${name-yjx}yjx[root@yjx214 /]# name=[root@yjx214 /]# echo ${name-yjx}[root@yjx214 /]# echo ${name}[root@yjx214 /]#
=
变量为null时, 同时改变变量值
[root@yjx214 /]# unset name[root@yjx214 /]# echo ${name=yjx}yjx[root@yjx214 /]# echo $nameyjx[root@yjx214 /]# name=""[root@yjx214 /]# echo ${name=yjx}[root@yjx214 /]#
:-
变量为null 或 空字符串
取默认值变量为null变量为空字符串${vari:-defaultValue}
:=
变量为null 或 空字符串, 同时改变变量值
{$vari:=defaultValue}测试 null[root@yjx214 /]# unset name[root@yjx214 /]# echo ${name:=yjx}yjx[root@yjx214 /]# echo ${name}yjx[root@yjx214 /]#测试 空字符串[root@yjx214 /]# name=""[root@yjx214 /]# echo ${name:=yjx}yjx[root@yjx214 /]# echo $nameyjx
:?
变量为null 或 空字符串时报错并退出
[root@yjx214 /]# unset name[root@yjx214 /]# echo ${name:?yjx}-bash: name: yjx[root@yjx214 /]# name=""[root@yjx214 /]# echo ${name:?yjx}-bash: name: yjx[root@yjx214 /]# name="guest"[root@yjx214 /]# echo ${name:?yjx}guest
:+
变量不为空时使用默认值 (与 :- 相反)
[root@yjx214 /]# name="guest"[root@yjx214 /]# echo ${name:+yjx}yjx[root@yjx214 /]# echo $nameguest