Shell 变量替换及测试

声明:$ 后面跟linux可执行命令

一、变量替换

                  语法                     说明
${变量名#匹配规则}从变量的开头进行规则匹配,将符合最短的数据删除
${变量名##匹配规则}从变量的开头进行规则匹配,将符合最长的数据删除
${变量名%匹配规则}从变量的尾部进行规则匹配,将符合最短的数据删除
${变量名%%匹配规则}从变量的尾部进行规则匹配,将符合最长的数据删除
${变量名/旧字符串/新字符串}变量内容包含旧字符串,则第一个旧字符串被新字符串取代
${变量名//旧字符串/新字符串}变量内容包含旧字符串,则全部的旧字符串被新字符串取代

 

 

 

 

 

 

 

 

例1 :

定义变量:$ var_1="I love you, Do you love me"

输出变量:$ echo $var_1

打印结果:I love you, Do you love me

测试1:从头匹配最短删除

  $ var_11=${var_1#*ove}     // * 表示匹配任意字符

  $ echo $var_11

  打印结果:you, Do you love me    // 注意开头的空格被去掉了。

测试2: 从头匹配最长删除(贪婪模式)

  $ var_12=${var_1##*ove}     // * 表示匹配任意字符

  $ echo $var_12

  打印结果:me   // 注意开头的空格被去掉了。

测试3: 从后匹配最短删除

  $ var_13=${var_1%ov*} 

  $ echo $var_13

  打印结果:I love you, Do you l

测试4: 从后匹配最长删除(贪婪模式)

  $ var_14=${var_1%%ov*}

  $ echo $var_14

  打印结果:I l   // 大写的 i 和 小写的 L

测试5: 替换第一个旧字符串

  $ var_15=${var_1/love/LOVE}

  $ echo $var_15

  打印结果:I LOVE you, Do you love me

测试6: 替换全部的旧字符串

  $ var_16=${var_1//love/LOVE}

  $ echo $var_16

  打印结果:I LOVE you, Do you LOVE me

二、变量测试  

变量测试不常用,实际编程中 if else 就可以取代变量测试。上面的 str没有配置 == str没有定义。expr是字符串,并不是变量。

举个例子

对于 var=${str-expr} :如果 str 没有配置,则 var=expr; 如果 str="",则 var=""; 如果 str 定义了且不为空,则 var=$str

  第一种情况:  

           

  第二种情况:

     

  第三种情况:

     

 

忽有所思:有疑惑的地方还是需要去测试、去验证,否则这个问题在心里永远是一个谜。

 

转载于:https://www.cnblogs.com/shenqidu/p/10560648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值