다음 대체 항목이 표시됩니다.이 기사:
${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}