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

おすすめ記事