shell变量的高级操作实例@H_301_4@
@H_301_4@
1 字符串切片
@H_301_4@格式:@H_301_4@${variable:start:length}@H_301_4@
作用:切取变量中指定长度的字符串,并指定起始位置。
name="michaelhu" echo${name:2:3} cha
2 计算字符串的长度
@H_301_4@格式1:${#:variable}@H_301_4@
@H_301_4@格式2:expr length "$variable"@H_301_4@
[root@python~]#echo${#name} 10 [root@python~]#exprlength"$name" 10
@H_301_4@格式1:${variable#style}@H_301_4@
作用:由左边开始,删除第一个匹配到的样式
filename="/usr/sbin/ntpdate" echo${filename#/*/} sbin/ntpdate
@H_301_4@格式2: ${variale##style}@H_301_4@
作用:由左开始,匹配整个字符串中的样式,删除匹配到最长的样式
filename="/usr/sbin/ntpdate" echo${filename##/*/} ntpdate
@H_301_4@格式3:${variale%style}@H_301_4@
作用:由右边开始,删除第一个匹配到的样式
filename="/usr/sbin/ntpdate" echo${filename%/*} /usr/sbin
@H_301_4@格式4: ${variable%%style@H_301_4@}
作用:由右边开始,匹配整个字符串中的样式,删除匹配到的最长的字符串
domainname="www.huwho.com" echo${domainname%%.*} www
@H_301_4@4 替换变量中字符串
@H_301_4@格式1:${variable/style/replace}@H_301_4@
作用:替换第一个匹配到的字符串
name="michaelhu" echo${name/michael/neo} neohu
@H_301_4@格式2: ${variable//style/replace}@H_301_4@
作用:替换匹配到的全部字符串
name="michaelmichaelhu" echo${name//michael/sternberg} sternbergsternberghu
@H_301_4@格式1:${variable/style/}@H_301_4@
作用:自左匹配,删除第一个匹配到的字符串
echo${name/michael/} michaelhu
@H_301_4@格式2:${variable//style/@H_301_4@}
作用:删除匹配到的所有字符串
echo${name//michael/} hu
@H_301_4@6 测试存在性及空值
@H_301_4@格式1:${test_variable-value}@H_301_4@
作用:若变量不存在,则符合判断,传回默认值
[root@python~]#unsetname [root@python~]#echo${name-"kong"} kong
@H_301_4@格式2: ${test_variable:=value}@H_301_4@
作用:若变量不存在或其值为空,则符合判断,传回默认值
[root@python~]#test="" [root@python~]#echo${test:="true_kong"} true_kong
@H_301_4@格式3:${test_variable:?"message"}@H_301_4@
作用:测试变量是否为空或不存在,提示错误信息
[root@python~]#test="" [root@python~]#echo${test:?"sorryempty"} -bash:test:sorryempty
@H_301_4@格式4:${test_variable:+"mesage"}@H_301_4@
作用:测试变量是否存在且非空,则符合判断条件
[root@python~]#test="funy" [root@python~]#echo${test:+"true"} true