一、Shell变量内容的删除
变量内容的删除通常可以用来截取内容,比如变量是一个FQDN,只想要主机名部分的内容,效果如图:
1、变量替换语法:
# ${变量名#匹配规则} 从变量开头进行匹配,将符合最短的数据删除 # ${变量名##匹配规则} 从变量开头进行匹配,将符合最长的数据删除,属于贪婪模式 # ${变量名%匹配规则} 从变量结尾进行匹配,将符合最短的数据删除 # ${变量名%%匹配规则} 从变量结尾进行匹配,将符合最长的数据删除,属于贪婪模式
2、具体示例:
variable1="i love you,do you love me' variable2=${variable1#*ov} #输出内容为e you,do you love me variable2=${variable1##*ov} #输出内容为e me variable3=${variable1%*ov} #输出内容为i love you,do you l variable3=${variable1%%*ov} #输出内容为i l url=www.linuxe.cn echo ${#url} #获得变量长度 echo ${url#www.} #井号代表从变量起始位置开始往后删除所指定的内容,支持通配符 echo ${url#*xe} #星号作为统配符将变量中第一个xe前面的内容删除 echo ${url##*xe} #两个井号的话会进行贪婪匹配,匹配到变量中最后一个xe结尾的地方为止 echo ${url%.cn} #百分号是从变量尾部开始往前删除 echo ${url%%.*} #从尾部开始,贪婪匹配 echo ${url:0:5} #从变量第一个字符开始切片,直到第五个字符 echo ${url:5:5} #从变量第五个字符开始切片,再往后取五个字符 echo ${url:5} #从第五个字符开始切,直到结尾
二、Shell变量内容的替换
使用方法和vi与sed中文本替换一样,同样也支持贪婪匹配
url=www.linuxe.cn echo ${url/linuxe/LINUXE} #写为url//为贪婪匹配
三、Shell变量内容的检测
常用于检查变量是否赋值,避免影响系统中已经定义过的变量
1、对未定义的变量进行内容的替换,可以用来给变量设置默认值
unset var1 #删除var1变量 echo ${var1-test} #输出内容将会是test var2=hello #var2已经定义了内容 echo ${var2-test} #输出内容仍然是hello var3= #定义var3变量为空 echo ${var3-test} #输出内容是空值
2、对未定义的变量或其值为空的变量进行内容的替换
unset var1 #删除var1变量 echo ${var1:-test} #输出内容将会是test var2=hello #var2已经定义了内容 echo ${var2:-test} #输出内容仍然是hello var3= #定义var3变量为空 echo ${var3:-test} #输出内容是test
除了上述之外,还有“+”“:+”、“=”“:=”、“?”“:?”这么6种实行变量替换的方法
四、Shell变量的切片操作
切片操作可以用来灵活的获取变量指定位置的内容,直接看示例更容易明白
var1="kafka hadoop yarn mapreduce"
var2=${var1:10} #从第10个索引开始切片,输出op yarn mapreduce
var3=${var1:10:5} #从第10个索引开始切片,只取5个,输出op ya
var4=${var1: -5} #从尾部切片,输出educe
var5=${var1: -5:2} #输出ed
发表评论: