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