答案1
man bash
,解释${parameter/pattern/string}
:
如果模式以 # 开头,则它必须匹配参数扩展值的开头。如果模式以 % 开头,则它必须匹配参数扩展值的末尾。
> var=abcd
> echo "${var/bc/_}"
a_d
> echo "${var/#bc/_}"
abcd
答案2
通过一些示例谈论 ${parameter/pattern/string} 格式的模式匹配和替换:
如果模式以 / 开头,则模式的所有匹配项都将替换为字符串。通常只替换第一个匹配项。
> test=test
> echo ${test//t/-}
> -es-
如果模式以 # 开头,则它必须匹配参数扩展值的开头。
> test=test
> echo ${test/#t/-}
> -est
如果模式以 % 开头,则它必须匹配参数扩展值的末尾。
> test=test
> echo ${test/%t/-}
> tes-
使用 asterix 的示例*
:
> test=test
> echo ${test/#*es/-}
> -t
参考: man bash
:${parameter/pattern/string}