本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Shell
  • 【Linux Shell脚本编程】变量替换、删除、检测与切片

【Linux Shell脚本编程】变量替换、删除、检测与切片

发布:TangLu2019-9-29 22:30分类: Shell 标签: 变量 bash shell

一、Shell变量内容的删除

变量内容的删除通常可以用来截取内容,比如变量是一个FQDN,只想要主机名部分的内容,效果如图:

1.png

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//为贪婪匹配


2.png


三、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


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【Linux Shell脚本编程】变量替换、删除、检测与切片
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-263.html  [生成短网址]

已有 0/2101 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~