在学习shell编程过程中遇到的小细节,在此记下。
1、shell中测试变量是否已经设置的两种方法
${variable:-value}
${variable:=value}
2、两种方法的相同点
如果variable已经被设置过,则两种方法都不对变量进行任何操作
3、两种方法的不同点
如果variable还未被设置过,则两种方法的操作便出现差异:
a)${variable:-value}在该句中对variable进行替换
b)${variable:=value}会对variable进行实实在在的赋值
4、举例
若进行如下操作:
$ NAME=taotaotheripper
$ echo Your name is ${NAME:-dandantheripper}
$ echo Your name is ${NAME:=dandantheripper}
输出结果为:
Your name is taotaotheripper
Your name is taotaotheripper
若继续进行如下操作:
$ unset NAME
$ echo Your name is ${NAME:-dandantheripper}
$ echo ${NAME}
$ echo Your name is ${NAME:=dandantheripper}
$ echo ${NAME}
输出结果为:
Your name is dandantheripper
Your name is dandantheripper
dandantheripper
其中第一次操作并未真正对NAME进行赋值,只是在当句进行了替换。