예상치 못한 동작이 발생했습니다. 다음 코드 조각이 "바인딩 해제된 변수" 오류로 인해 실패합니다.
#!/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