基于模式取子串:
${var#*word}:其中word可以是指定的任意字符;功能:自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word字符之间的所有字符; ${var##*word}:同上,不过,删除的是字符串开头至最后一次由word指定的字符之间的所有内容; file="/var/log/messages" ${file##*/}: messages${var%word*}:其中word可以是指定的任意字符;功能:自右而左,查找var变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word字符之间的所有字符;
file="/var/log/messages" ${file%/*}: /var/log${var%%word*}:同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符;
示例:url=http://www.magedu.com:80
${url##*:}=80 ${url%%:*}=http
执行结果
查找替换:
${var/pattern/substi}:查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substi替换之; ${var//pattern/substi}: 查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substi替换之;${var/#pattern/substi}:查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substi替换之;
${var/%pattern/substi}:查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substi替换之;查找并删除:
${var/pattern}:查找var所表示的字符串中,删除第一次被pattern所匹配到的字符串 ${var//pattern}: ${var/#pattern}: ${var/%pattern}:字符大小写转换:
${var^^}:把var中的所有小写字母转换为大写; ${var,,}:把var中的所有大写字母转换为小写;变量赋值:
${var:-value}:如果var为空或未设置,那么返回value;否则,则返回var的值; ${var:=value}:如果var为空或未设置,那么返回value,并将value赋值给var;否则,则返回var的值; ${var:+value}:如果var不空,则返回value; ${var:?error_info}:如果var为空或未设置,那么返回error_info;否则,则返回var的值;