이 분석은 어떤 모습인가요? [복사]

이 분석은 어떤 모습인가요? [복사]

이 주장 분석은 무엇입니까?

$RES="${SOME_VAR##foo/}"  

답변1

${SOME_VAR##foo/}-세게 때리다변수 대체.

foo/문자열의 처음(변수의 값)부터 패턴과 일치하는 부분을 찾아 SOME_VAR패턴을 포함한 왼쪽 부분을 잘라냅니다.

예:

s="foo/some#foo#textfoo/textlast"
echo ${s##foo/}
some#foo#textfoo/textlast

노트는 문자열의 시작 부분에서 첫 번째 패턴 ${s##foo/}만 검색한다는 점에서 와 동일합니다 .${s#foo/}foo/

이렇게 하면 ${s##*foo/}왼쪽 부분이 잘립니다.마지막일치 패턴(포함)

echo ${s##*foo/}
textlast

답변2

에 따르면 man bash:

매개변수 확장
"$" 문자는 매개변수 확장, 명령 대체 또는 산술 확장을 소개합니다. 확장할 매개변수 이름이나 기호는 중괄호로 묶을 수 있습니다. 이는 선택 사항이지만 이름의 일부로 해석될 수 있는 바로 다음 문자로부터 확장되는 변수를 보호하는 데 사용됩니다.

${매개변수#단어}
${매개변수##단어}
일치하는 접두사 패턴을 제거합니다.
경로 이름 확장과 마찬가지로 단어가 확장되어 패턴을 생성합니다. 패턴이 매개변수 값의 시작 부분과 일치하는 경우 확장 결과는 가장 짧은 일치 패턴('#' 케이스) 또는 가장 긴 일치 패턴('##' 케이스)이 제거된 매개변수 확장 값입니다. 인수가 @ 또는 *인 경우 패턴 제거 작업이 각 위치 인수에 차례로 적용되고 확장이 결과 목록이 됩니다. 매개변수가 @ 또는 * 첨자가 붙은 배열 변수인 경우 패턴 제거 작업은 배열의 각 구성원에 차례로 적용되고 확장은 결과 목록입니다.

관련 정보