cat
및 를 사용하여 파일에 일부 내용을 쓰는 스크립트가 있습니다 EOF
. 이 기능은 bash 스크립트에서는 작동하지만 함수에 넣으면 작동하지 않습니다.
작업 코드:
cat << EOF | sudo tee /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
구문 강조입니다(좋아 보입니다).
작동하지 않는 코드:
function someFunctions {
cat << EOF | sudo tee /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
}
someFunctions
이에 대한 구문 강조(보기 좋지 않음)
내 편집기(Atom)는 모든 것을 녹색으로 표시합니다. 이는 구문 강조 표시가 손실되었음을 의미하지만 문제를 찾을 수 없습니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
여기 EOF
-doc 태그~ 해야 하다줄의 시작 부분에 있거나 전체 탭으로 들여쓰기되어 있습니다.
someFunctions {
sudo tee /etc/network/interfaces <<-'EOF'
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
}
function
이 키워드는 더 이상 사용되지 않으며 가치를 추가하지 않으므로 제거했습니다 cat
. 또한 <<-'EOF'
(대신 <<EOF
)을 사용하여 선행 TAB 문자를 제거하고 여기 문서의 내용이 변수 및 기타 대체 항목에 대해 평가되지 않도록 했습니다. 변수 대체를 원할 경우 를 인용하지 말고 EOF
를 사용하십시오 <<-EOF
.