예상치 못한 동작이 발생했습니다. 다음 스니펫이 '언바운드 변수' 오류로 인해 실패했습니다.
#!/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