Shell变量的高级用法(一)——变量替换

611 阅读1分钟

变量替换

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

测试

定义一个字符串变量variable,通过不同的替换语法对变量进程替换,并输入结果。

➜ ~ variable="I love you, Do you love me?"

示例1:

➜ ~ result1=${variable#*ov}
➜ ~ echo $result1
e you, Do you love me?

匹配规则为*ov,最短符合匹配规则的字符串为I lov

示例2:

➜ ~ result2=${variable##*ov} ➜ ~ echo $result2 e me?

匹配规则为*ov,##使用贪婪匹配模式,将匹配到最长符合规则的字符串为I love you, Do you lov

示例3:

➜ ~ result3=${variable%ov*}
➜ ~ echo $result3
I love you, Do you l

匹配规则为ov*,从后往前最短符合匹配规则的字符串为ov me?

示例4:

➜ ~ result4=${variable%ov*}
➜ ~ echo $result4
I l

匹配规则为ov*,从后往前最短符合匹配规则的字符串为ove you, Do you lov me?

示例5:

➜ ~ result5=${variable/love/LOVE}
➜ ~ echo $result5
I LOVE you, Do you love me?

将字符串love替换成大写LOVE,只会替换从开头开始第一个匹配到的love

示例6:

➜ ~ result6=${variable//love/LOVE}
➜ ~ echo $result6
I LOVE you, Do you LOVE me?

将字符串love替换成大写LOVE,将匹配到的旧字符串love全部替换成新字符串LOVE