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
Here 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
.