shell变量的高级操作实例

wKioL1mdFw6Q9HRzAAAa4JWan34154.png

    1 字符串切片

    格式:${variable:start:length}

        作用:切取变量中指定长度的字符串,并指定起始位置。

name="michael hu"
echo ${name:2:3}
cha

    2 计算字符串的长度

格式1:${#:variable}

格式2:expr length "$variable"

[root@python ~]# echo ${#name}
10
[root@python ~]# expr length "$name"
10

3 删除变量中指定的样式

格式1:${variable#style} 

        作用:由左边开始,删除第一个匹配到的样式

filename="/usr/sbin/ntpdate"
echo ${filename#/*/}
sbin/ntpdate

格式2: ${variale##style} 

        作用:由左开始,匹配整个字符串中的样式,删除匹配到最长的样式

filename="/usr/sbin/ntpdate"
echo ${filename##/*/}
ntpdate

格式3:${variale%style} 

        作用:由右边开始,删除第一个匹配到的样式

filename="/usr/sbin/ntpdate"
echo ${filename%/*}
/usr/sbin

格式4: ${variable%%style

        作用:由右边开始,匹配整个字符串中的样式,删除匹配到的最长的字符串

domainname="www.huwho.com"
echo ${domainname%%.*}
www

 4 替换变量中字符串

格式1:${variable/style/replace}

         作用:替换第一个匹配到的字符串

name="michael hu"
echo ${name/michael/neo}
neo hu

格式2: ${variable//style/replace}

        作用:替换匹配到的全部字符串

name="michael michael hu"
echo ${name//michael/sternberg}
sternberg sternberg hu

 5 删除变量中的字符串

格式1:${variable/style/} 

        作用:自左匹配,删除第一个匹配到的字符串

echo ${name/michael/}
michael hu

格式2:${variable//style/

        作用:删除匹配到的所有字符串

echo ${name//michael/}
hu

 6 测试存在性及空值

格式1:${test_variable-value} 

        作用:若变量不存在,则符合判断,传回默认值

[root@python ~]# unset name
[root@python ~]# echo ${name-"kong"}
kong

格式2: ${test_variable:=value} 

        作用:若变量不存在或其值为空,则符合判断,传回默认值           

[root@python ~]# test=""
[root@python ~]# echo ${test:="true_kong"}
true_kong

格式3:${test_variable:?"message"}

        作用:测试变量是否为空或不存在,提示错误信息

[root@python ~]# test=""
[root@python ~]# echo ${test:?"sorry empty"}
-bash: test: sorry empty

格式4:${test_variable:+"mesage"}

        作用:测试变量是否存在且非空,则符合判断条件

[root@python ~]# test="funy"
[root@python ~]# echo ${test:+"true"}
true