${var/a/b/\c}는 무엇을 의미하나요?

${var/a/b/\c}는 무엇을 의미하나요?

나는 이 말(건축?)에 약간 혼란스러워요. 적절한 정보를 찾을 수 없습니다(무엇이라고 불러야 할지조차 모르겠습니다). 여기서 무슨 일이 일어나고 있는 걸까요?

bash-4.3$ var="a/b"
bash-4.3$ f=${var/b/c/\d}                                                                                                                                                                                                             
bash-4.3$ echo $f                                                                                                                                                                                                                     
a/c/d

아니면 이거:

bash-4.3$ var="b/a"                                                                                                                                                                                                                   
bash-4.3$ f=${var/b/c/\d}                                                                                                                                                                                                             
bash-4.3$ echo $f                                                                                                                                                                                                                     
c/d/a 

감사해요

답변1

Bash 매개변수 확장에 대해 알아보세요. 귀하의 예에서는 검색 및 바꾸기 구문을 사용하여 주어진 패턴의 첫 번째 항목을 바꿉니다.

${parameter/pattern/string}

예:

> X="aaaa"
> echo ${X/a/b}   # substitute first occurence of a with b
> baaa

모든 항목을 바꾸는 구문은 다음과 같습니다.

${parameter//pattern/string}

예:

> X="aaaa"
> echo ${X//a/b}   # substitute all occurences of a with b
> bbbb

따라서 첫 번째 예에서 매개변수는 "a/b"이고 bash에게 "a/b"(var의 값)에서 처음 나타나는 "b"를 문자열 "c/ d"(이것은 결과는 "a/c/d")입니다. "\d"는 불필요한 이스케이프이므로 "d"만 사용하는 것과 차이가 없습니다.

관련 정보