Falando sobre correspondência e substituição de padrões em resumo para o formato $ {parameter / pattern / string} com alguns exemplos:
If the pattern begins with /, all matches of pattern are replaced with string. Normally only the first match is replaced.
> test=test
> echo ${test//t/-}
> -es-
If pattern begins with #, it must match at the beginning of the expanded value of parameter.
> test=test
> echo ${test/#t/-}
> -est
If pattern begins with %, it must match at the end of the expanded value of parameter.
> test=test
> echo ${test/%t/-}
> tes-
Um exemplo com o uso do asterix *
:
> test=test
> echo ${test/#*es/-}
> -t
Referência: man bash
: ${parameter/pattern/string}