*$'\n'* 무슨 뜻인가요?

*$'\n'* 무슨 뜻인가요?

다음과 같은 zsh 위젯이 있습니다

down-line-or-select() {
    if [[ $RBUFFER == *$'\n'* ]]; then
    zle down-line
    else
    zle menu-select -w
    fi
}

zle -N down-line-or-select
bindkey $terminfo[kcud1] down-line-or-select

여기서는 의미를 이해하지 못합니다 *$'\n'*. 누군가 이것을 설명할 수 있나요?

답변1

이 테스트는 [[ $variable == pattern ]]변수 값이 주어진 쉘 패턴과 일치하는지 테스트합니다.

이 경우 패턴은 입니다 *$'\n'*. 패턴의 일부는 $'\n'리터럴 줄 바꿈을 나타냅니다. $'...'일반적으로 말하면 "ANSI C 문자열"입니다. 이는 내부 백슬래시 이스케이프 시퀀스가 $'...'​​C 언어 표준( \n개행 문자, \t탭 등) 에 설명된 대로 해석됨을 의미합니다. 양쪽의 '는 *접두사 및 접미사 문자열과 일치합니다.

즉, 쉘 패턴은 *$'\n'*개행 문자가 하나 이상 포함된 모든 문자열과 일치합니다. 즉, 시험은 다음과 같습니다.진짜의 여러 줄 문자열에 대해 $RBUFFER.

테스트 자체도 쉘에 작성된 대로 유효합니다 bash.

관련 정보