8 >>>>>>>>>>>>>>###
9
10 var=lookback
11 echo ${var:?Legion}
13 echo ${var:?Legion}
14 echo test
15
~/123.sh [FORMAT=unix] [TYPE=SH] [POS=15,1][100%] 15-07-08 - 21:03:06
"123.sh" 15L, 366C [w]
[root@Legion100 ~]# bash 123.sh
lookback
123.sh: line 13: var: Legion
[root@Legion100 ~]# echo $?
1
[root@Legion100 ~]#
解释:若变量var不为空,则⽤变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利⽤此特性来检查是否设置了变量的值。
6、扩展
[root@Legion100 ~]# var=""
[root@Legion100 ~]# echo ${var:-a}cbeebies
a
[root@Legion100 ~]# a=Legion
[root@Legion100 ~]# echo ${var:-$a}
Legion
[root@Legion100 ~]# echo ${var:-$(date +%F)}
2015-07-08
信件格式[root@Legion100 ~]#
说明:你们以为a这个位置只能常量?答案是否定的照样可以是其他变量名或者⼀个命令。
7、${var%pattern}
[root@Legion100 ~]# var=lookbacklookbacklookback
[root@Legion100 ~]# echo ${var%b*}
lookbacklookbacklook
[root@Legion100 ~]#
解释:${variable%pattern},这种模式时,shell在variable中查找,看它是否⼀给的模式pattern结尾,如果是,就从命令⾏把variable中的内容去掉右边最短的匹配模式
8、${var%%pattern}
[root@Legion100 ~]# var=lookbacklookbacklookback
[root@Legion100 ~]# echo ${var%%b*}
look
津波[root@Legion100 ~]#
解释:${variable%%pattern},这种模式时,shell在variable中查找,看它是否⼀给的模式pattern结尾,如果是,就从命令⾏把variable 中的内容去掉右边最长的匹配模式
9、${var#pattern}
[root@Legion100 ~]# var=lookbacklookbacklookback
[root@Legion100 ~]# echo ${var#*b}
acklookbacklookback
[root@Legion100 ~]#
解释:${variable#pattern} 这种模式时,shell在variable中查找,看它是否⼀给的模式pattern开始,如果是,就从命令⾏把variable中的内容去掉左边最短的匹配模式
10、${var##pattern}
[root@Legion100 ~]# var=lookbacklookbacklookback
wbt
翻译设备[root@Legion100 ~]# echo ${var#*b}
acklookbacklookback
[root@Legion100 ~]# echo ${var##*b}
ack
[root@Legion100 ~]#
解释: ${variable##pattern} 这种模式时,shell在variable中查找,看它是否⼀给的模式pattern结尾,如果是,就从命令⾏把variable中的内容去掉右边最长的匹配模式