여러 줄 주석에서 변수를 참조할 때 Bash '바인딩되지 않은 변수' 오류(set -u)

여러 줄 주석에서 변수를 참조할 때 Bash '바인딩되지 않은 변수' 오류(set -u)

예상치 못한 동작이 발생했습니다. 다음 스니펫이 '언바운드 변수' 오류로 인해 실패했습니다.

#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF

테스트 대상:
GNU bash, 버전 4.4.12(1)-릴리스
GNU bash, 버전 4.2.46(2)-릴리스

답변1

정의한 것은 set -u정의되지 않은 변수(내장 set명령).

here-documents의 형식 <<EOF쉘에 의해 변수가 확장(매개변수 확장)될 수 있도록 내부 단어를 큰따옴표로 묶는 것과 동일합니다( bash이 경우에는 명령 대체 및 산술 확장도 적용됨). 확장이 발생하지 않도록 하려면 여기 문자열을 작은 따옴표로 묶으세요.

set -u
<<'EOF'
a=a
b=$a
EOF

관련 정보