O que o hash em $ {parameter / # pattern / string} faz?

3

Eu vi a seguinte substituição em este artigo :

${PWD/#$HOME/~}

Como se compara a isso?

${PWD/$HOME/~}

Ambos parecem ser o mesmo. Eu não sei porque o hash foi incluído.

    
por Casebash 23.04.2014 / 10:18

2 respostas

6

man bash , explicação para ${parameter/pattern/string} :

If pattern begins with #, it must match at the beginning of the expanded value of parameter. If pattern begins with %, it must match at the end of the expanded value of parameter.

> var=abcd
> echo "${var/bc/_}"
a_d
> echo "${var/#bc/_}"
abcd
    
por 23.04.2014 / 10:26
2

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}

    
por 13.02.2018 / 19:43

Tags