字符串长度
${#string}
expr length $string
expr "$string" : '.*'

从字符串开始的位置匹配子串的长度
expr match "$string" '$substring'
$substring 是一个正则表达式
expr "$string" : '$substring'
$substring 是一个正则表达式


索引
expr index $string $substring
匹配到子串的第一个字符的位置.

提取子串
${string:position}

在 string 中从位置$position 开始提取子串.
如果$string 为"*"或"@",那么将提取从位置$position 开始的位置参数,[1]

${string:position:length}

在 string 中从位置$position 开始提取$length 长度的子串.

如果$string 参数为"*"或"@",那将最大的提取从$position 开始的$length 个位置参数.


expr substr $string $position $length
在 string 中从位置$position 开始提取$length 长度的子串.


expr match "$string" '\($substring\)'
从$string 的开始位置提取$substring,$substring 是一个正则表达式.
expr "$string" : '\($substring\)'
从$string 的开始位置提取$substring,$substring 是一个正则表达式.


子串削除
${string#substring}
从$string 的左边截掉第一个匹配的$substring
${string##substring}
从$string 的左边截掉最后一个个匹配的$substring


${string%substring}
从$string 的右边截掉第一个匹配的$substring
${string%%substring}
从$string 的右边截掉最后一个匹配的$substring


子串替换
${string/substring/replacement}
使用$replacement 来替换第一个匹配的$substring.
${string//substring/replacement}
使用$replacement 来替换所有匹配的$substring.


${string/#substring/replacement}
如果$substring 匹配$string 的开头部分,那么就用$replacement 来替换$substring.
${string/%substring/replacement}
如果$substring 匹配$string 的结尾部分,那么就用$replacement 来替换$substring.