SHELL变量
1.设置参数语法name=value
注意等号左右没有空格,否则会报错
[root@Server ~]# name =tom
bash: name: 未找到命令...
[root@Server ~]# name= tom
bash: tom: 未找到命令...
[root@Server ~]# name == tom
bash: name: 未找到命令...
2.参数显示
如果之前没有设置过某个参数,则该参数属于不存在。如果设置了参数但没有参数值,该参数属于NULL,也就是值是未知的。
2.1${parameter-value}
核查$prameter参数是否存在,如果不存在则显示value值,存在显示设置的值
[root@Server ~]# unset name [root@Server ~]# echo ${name-tom} tom
注意该格式值核查参数是否存在而不核查参数是否为空,例如:
[root@Server ~]# name= [root@Server ~]# echo ${name-tom}
返回的是空。
2.2${parameter:-value}
核查$prameter参数是否存在或者是否是NULL(未知),如果不存在则显示value值,存在显示设置的值
[root@Server ~]# echo ${name:-tom} tom
注意${parameter-value}和${parameter:-value}只是改变返回值,并不会改变$prameter的值
例如:
[root@Server ~]# echo $name
$name的值还是空
2.3${parameter=value}
核查$prameter参数是否存在,如果不存在则显示value值,同时将value值赋给$prameter。存在显示设置的值,,例如
[root@Server ~]# unset [root@Server ~]# echo ${name=tom} tom [root@Server ~]# echo $name tom
2.3${parameter:=value}
核查$prameter参数是否存在或者是否是NULL(未知),如果不存在则显示value值,同时将value值赋给$prameter。存在显示设置的值。
[root@Server ~]# unset name [root@Server ~]# echo ${name:=tom} tom [root@Server ~]# echo $name tom [root@Server ~]# unset name [root@Server ~]# name= [root@Server ~]# echo ${name:=tom} tom [root@Server ~]# echo $name tom
2.4${name+value}
核查参数是否存在,如果存在则返回value值否则返回空,例如:
[root@Server ~]# unset name [root@Server ~]# echo ${name+tom} [root@Server ~]# name=jack [root@Server ~]# echo ${name+tom} tom
第一次由于name的值为设置所有返回空,name赋值后再次打印时显示value的值。它可以用来判断一个参数是否存在。
2.5${name:+value}
核查参数是否存在或是否为NULL(未知),如果存在且不为NULL则返回value值否则返回空,例如:
[root@Server ~]# unset name [root@Server ~]# name= [root@Server ~]# echo ${name:+tom} [root@Server ~]# name=jack [root@Server ~]# echo ${name:+tom} tom
2.6${name?value}
核查参数是否存在,如果不存在则返回异常信息value值否则name的值
[root@Server ~]# unset name [root@Server ~]# echo ${name?error} -bash: name: error [root@Server ~]# echo $? 1
$?:返回上次执行的状态码,非0表示非正常退出
2.7${name:?value}
核查参数是否存在或值为NULL(未知),如果不存在或值为NULL(未知)则返回异常信息value值否则name的值。
[root@Server ~]# unset name [root@Server ~]# name= [root@Server ~]# echo ${name:?error} -bash: name: error [root@Server ~]# echo $? 1