패턴의 용도를 설명해주세요.
arg="${arg//\\/\\\\}"
정확히 일치한다는 뜻인가요?
답변1
${var//pattern/replacement}
ksh93 쉘의 매개변수 확장 연산자입니다.
$var
일치하는 모든 문자열 pattern
이 로 대체되는 값 으로 확장됩니다 replacement
.
이 연산자는 zsh, bash 및 mksh를 포함한 여러 셸에서 복사되었습니다. 그렇지 않으면 표준 sh 매개변수 확장 연산자가 아닙니다.
?
이 패턴은 단일 문자 일치, *
문자 시퀀스 일치, 문자 일치 또는 [abc]
임의의 문자 일치(다양한 셸에는 이러한 문자에 대한 추가 확장이 있음) 와 같은 셸의 전역 패턴입니다 .a
b
c
'*'
특수 전역 문자가 \*
, , ¹ 처럼 인용 되면 "*"
문자 그대로 해석됩니다. ${var//\?/replacement}
예를 들어 모든 문자 대신 물음표를 바꿉니다.
\\
백슬래시는 그 자체를 나타내는 것처럼 '\'
인용되어야 하며 "\\"
, 따라서 모든 백슬래시가 두 개의 백슬래시로 대체되는 값으로 확장되어야 합니다 ${var//\\/\\\\}
.$var
1전체가 큰따옴표 안에 있는 경우에도 \
다른 인용 연산자 대신 사용하는 것이 더 나은 경우가 많습니다. ${...}
패턴 및/또는 대체가 확장에서 파생되고 해당 확장이 참조되지 않는 경우(예: 를 기준 ${var//$pattern/$replacement}
으로${var//"$pattern"/"$replacement"}