【Linux Shell脚本编程】变量子串与扩展变量
一、Shell变量子串
常用来截取变量中的字符串内容,比如变量的实际值为一串FQDN地址,需要通过子串截取主机名部分的内容。在进行截取时可以通过指定内容截取,也可以指定索引下标进行截取。下面是一些Shell变量子串常用方法
1、获取变量长度
name=tanglu echo ${#name} #输出结果为6
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} #从第五个字符开始切,直到结尾 url=www.linuxe.cn echo ${url/linuxe/LINUXE} #使用方法和vi与sed中文本替换一样,同样也支持贪婪匹配 echo ${url//linuxe/LINUXE} #替换所有的linuxe为LINUXE
3、Shell变量的切片操作
切片操作可以用来灵活的获取变量指定位置的内容
website="www.linuxe.cn" echo ${website:4} #从4个索引开始切片,输出为linuxe.cn echo ${website:4:6} #从第4个索引开始切片,只取6个,输出linuxe echo ${website:-5} #从尾部切片 echo ${website:-5:2}
二、Shell特殊扩展变量
常用于判断变量是否赋值,避免影响系统中已经定义过的变量
result=${parameter:-word} #如果变量parameter值为空,就返回word字符,这里将word赋值给了result变量 result=${parameter:=word} #如果变量parameter值为空,使用word字符替代变量值,这里将word赋值给了result变量 result=${parameter:?word} #如果变量parameter值为空,将word字符替作为错误输出,可以用于设置变量为空导致错误时的提示信息 result=${parameter:+word} #如果变量parameter值为空,不做任何操作,否则返回word字符串,这里将word赋值给了result变量
1、对未定义的变量进行内容的替换,可以用来给变量设置默认值
unset var1 #删除var1变量 echo ${var1:-test} #输出内容为test var2=hello echo ${var2:-test} #输出内容为hello 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
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论