str -> shell 变量
${#str}
expr length $str
expr index $str [char]
# 从 start 开始(包含)截取到结尾
${str:start}
# 从 start 开始(包含)截取 length 个字符
${str:start:length}
# 使用负数可以从尾部截取
expr substr $str [position] [length]
# substring 可以是正则表达式
${str#substring}
# substring 可以是正则表达式
${str##substring}
# substring 可以是正则表达式
${str%substring}
# substring 可以是正则表达式
${str%%substring}
# 只替换第一个
${str/substring/replacement}
# 替换所有
${str//substring/replacement}
# 从左侧匹配替换一个
${string/#substring/replacement}
# 从右侧匹配替换一个
${string/%substring/replacement}