
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
。