이 주장 분석은 무엇입니까?
$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
:
매개변수 확장
"$" 문자는 매개변수 확장, 명령 대체 또는 산술 확장을 소개합니다. 확장할 매개변수 이름이나 기호는 중괄호로 묶을 수 있습니다. 이는 선택 사항이지만 이름의 일부로 해석될 수 있는 바로 다음 문자로부터 확장되는 변수를 보호하는 데 사용됩니다.${매개변수#단어}
${매개변수##단어}
일치하는 접두사 패턴을 제거합니다.
경로 이름 확장과 마찬가지로 단어가 확장되어 패턴을 생성합니다. 패턴이 매개변수 값의 시작 부분과 일치하는 경우 확장 결과는 가장 짧은 일치 패턴('#' 케이스) 또는 가장 긴 일치 패턴('##' 케이스)이 제거된 매개변수 확장 값입니다. 인수가 @ 또는 *인 경우 패턴 제거 작업이 각 위치 인수에 차례로 적용되고 확장이 결과 목록이 됩니다. 매개변수가 @ 또는 * 첨자가 붙은 배열 변수인 경우 패턴 제거 작업은 배열의 각 구성원에 차례로 적용되고 확장은 결과 목록입니다.