${var:offset}:返回字符串变量var中从第offset个字符后(不包括第 offset个字符)的字符开始,到最后的部分,offset的取值在0到${#var}-1之间
${var:offset:number}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,长度为number的部分
${var:-length}:取字符串的最右侧几个字符
注意冒号后必须有个空格
${var: offset: -length}: 从最左侧跳过offset字符,一直向右取到距离最右侧length个字符之前的内容
${var: -length: -offset}: 先从最右侧向左取到length个字符开始,再向右取到距离最右侧offset个字符之间的内容
注意:-length前空格
基于模式取字串
${var#*word}:其中word可以是指定的任意字符
功能:自左而右,查找var变量所存储的字符串中,第一次出现的word,删除字符串开头至第一次出现word字符串(含)之间的所有字串
${var##*word}:同上, 含贪婪模式,不同的是,删除的是字符串开头至最后一次由word指定的字符串之间的所有内容
eg:
file="var/log/messages"
${file#*/}:log/messages
${file##*/}:messages
${var%word*}:其中word可以是指定的任意字符
功能:自右而左,查找var变量所存储的字符串中,第一次出现的word,删除字符串开头至第一次出现word字符串(含)之间的所有字串
${var%%word*}:同上, 含贪婪模式,不同的是,删除的是字符串开头至最后一次由word指定的字符串之间的所有内容
查找替换:
${var/pattern/substr}:查找var所表示的字符串中,第一次被pattern所匹配的字符串,以substr替换之
${var//pattern/substr}查找var所表示的字符串中,所有能被pattern所匹配的字符串,以substr替换之
${var/#pattern/substr}:查找var所表示的字符串中,行首被pattern所匹配的字符串,以substr替换之
${var/%pattern/substr}查找var所表示的字符串中,行尾被pattern所匹配的字符串,以substr替换之
原文:https://blog.51cto.com/14907072/2534383