声明:$ 后面跟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