다음은 정확히 무엇을 하는가?
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