Bash
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)將所有內容顯示為綠色,這意味著它失去了語法高亮,但我找不到問題所在。
我怎樣才能解決這個問題?
EOF
here-doc 標記必須位於行首,或者縮進一個完整的 TAB 字元: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 字元,並且不會針對變數和其他替換評估 here-doc 的內容。如果您想要變數替換,請不要引用EOF
,<<-EOF
而是使用。