이 매개변수 확장은 무엇을 합니까?

이 매개변수 확장은 무엇을 합니까?

다음은 정확히 무엇을 하는가?

MY_VAR=${MY_INPUT##*$'\n'}

답변1

*\n저장된 문자열의 시작 부분에서 가장 긴 부분 문자열을 제거합니다 MY_INPUT. 와일드카드가 있으므로 *결과적으로 MY_INPUT마지막 행을 제외한 모든 행이 삭제되고 마지막 행이 에 저장됩니다 MY_VAR. before $는 문자 그대로 문자 합계가 아닌 개행 문자로 평가하고 처리하기 위해 거기에 배치됩니다 .'\n'\n\n

몇 가지 예:

MY_INPUT            MY_VAR
"a\nb\nc"        -> "c"
"a\n"            -> ""
"abcde\n\n\ndef" -> "def"

참고: 두 번째 예에서는 마지막 줄이 비어 있으므로 MY_VAR빈 문자열입니다.


요구 사항에 따라 다른 접근 방식은 다음과 같습니다.

tail -n1 <<< "$MY_INPUT"

또는:

echo "$MY_INPUT" | tail -n1

관련 정보