Shell学习笔记

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

2022-01-17  本文已影响0人  醜捌怪

变量替换

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

测试

定义一个字符串变量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

上一篇下一篇

猜你喜欢

热点阅读