字符串切片:${var:offset:lenth}
a="world", ${a:2:2}, rl
取字符串最后的几个字符:${var: -lenth}
注意:冒号之后有空格;
基于模式取子串:
${var#*word}:其中word可以是指定的任意字符;自左而右,查找var变量所存储字符中,第一次出现的word,删除字符开头直至第一次wrod出现处之间的所有字符;
mypath='sysconfig/network-scripts/ifcfg-eth0' echo ${mypath#*/} 输出:network-scripts/ifcfg-eth0
${var##*word}: 其中word可以是指定的任意字符;自左而右,查找var变量所存储字符中,最后一次出现的word,删除字符开头直至最后一次wrod出现处之间的所有字符;
mypath='/sysconfig/network-scripts/ifcfg-eth0' echo ${mypath##*/} 输出:ifcfg-eth0
${var%word*}: 自右而左,删除第一次word出现处的字符开始直到尾部的所有字符;
${var%%word*}:自右而左,删除最后一次word出现处的字符开始直到尾部的所有字符;
例子:url=http://www.magedu.com:80
取端口:${url##*:}
取协议:${url%%:*}
查找并替换:
${var/pattern/substi}:查找var所表示的字串中,第一次被Pattern匹配到的字串,并以substi替换之;
${var//patten/substi}:查找var所表示的字串中,所有被Pattern匹配到的字串,并以substi替换之;
${var/#pattern/substi}:以行首锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之;
${var/%pattern/substi}:以行尾锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之;
可使用?, *元字符;
查找并删除:
${var/pattern}:删除pattern匹配到的第一次出现;
${var//pattern}: 删除pattern匹配到的所有出现;
${var/#pattern}
${var/%pattern}
字符串大小写转换:
${var^^}:小写-->大写
${var,,}:大写-->小写
${var#word} 删除字符串var中开头匹配到work字符
${var%word} 删除字符串var中末尾匹配到work字符
test="test46789test"
echo ${test#test} #输出 46789test
echo ${test%test} #输出 test46789
basename path 截取文件/目录名
dirname path 截取文件/目录父路径
echo `basename /etc/dsfs/mmm` 输出mmm
echo `dirname /etc/dsfs/mmm` 输出/etc/dsfs/