여러 줄 주석에서 변수를 참조할 때 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 with 형식은 EOF쉘이 변수를 확장(인수 확장)할 수 있도록 큰따옴표 안의 단어와 동일합니다( bash이 경우 명령 대체 및 산술 확장의 영향도 받음). 확장을 방지하려면 여기에서 문자열을 작은따옴표로 묶으십시오.

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

관련 정보