sudo 리디렉션이 기능에서 작동하지 않습니다

sudo 리디렉션이 기능에서 작동하지 않습니다

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.

관련 정보