${parameter/#pattern/string}의 해시는 무엇을 합니까?

${parameter/#pattern/string}의 해시는 무엇을 합니까?

다음 대체 항목이 표시됩니다.이 기사:

${PWD/#$HOME/~}

이것은 어떻게 비교됩니까?

${PWD/$HOME/~}

둘 다 똑같은 것 같습니다. 해시가 왜 포함되는지 모르겠습니다.

답변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-

별표를 사용한 예 *:

> test=test
> echo ${test/#*es/-}
> -t

인용하다: man bash:${parameter/pattern/string}

관련 정보