이 패턴의 의미는 무엇입니까 arg="${arg//\\/\\\\}"

이 패턴의 의미는 무엇입니까 arg="${arg//\\/\\\\}"

패턴의 용도를 설명해주세요.

arg="${arg//\\/\\\\}"

정확히 일치한다는 뜻인가요?

답변1

${var//pattern/replacement}ksh93 쉘의 매개변수 확장 연산자입니다.

$var일치하는 모든 문자열 pattern이 로 대체되는 값 으로 확장됩니다 replacement.

이 연산자는 zsh, bash 및 mksh를 포함한 여러 셸에서 복사되었습니다. 그렇지 않으면 표준 sh 매개변수 확장 연산자가 아닙니다.

?이 패턴은 단일 문자 일치, *문자 시퀀스 일치, 문자 일치 또는 [abc]임의의 문자 일치(다양한 셸에는 이러한 문자에 대한 추가 확장이 있음) 와 같은 셸의 전역 패턴입니다 .abc

'*'특수 전역 문자가 \*, , ¹ 처럼 인용 되면 "*"문자 그대로 해석됩니다. ${var//\?/replacement}예를 들어 모든 문자 대신 물음표를 바꿉니다.

\\백슬래시는 그 자체를 나타내는 것처럼 '\'인용되어야 하며 "\\", 따라서 모든 백슬래시가 두 개의 백슬래시로 대체되는 값으로 확장되어야 합니다 ${var//\\/\\\\}.$var


1전체가 큰따옴표 안에 있는 경우에도 \다른 인용 연산자 대신 사용하는 것이 더 나은 경우가 많습니다. ${...}패턴 및/또는 대체가 확장에서 파생되고 해당 확장이 참조되지 않는 경우(예: 를 기준 ${var//$pattern/$replacement}으로${var//"$pattern"/"$replacement"}

관련 정보