2016-01-21 119 views
1

我想这个代码添加到文件的末尾:如何使用bash将多行添加到文件末尾?

DAEMON_OPTS="-a :80 \ 
      -T localhost:6082 \ 
      -f /etc/varnish/default.vcl \ 
      -S /etc/varnish/secret \ 
      -s malloc,256m" 

我怎样才能做到这一点,同时保持结构和斜线?

我试着用一行echo线以及本没有成功:

cat > /etc/default/varnish <<- EOM 
    DAEMON_OPTS="-a :80 \ 
      -T localhost:6082 \ 
      -f /etc/varnish/default.vcl \ 
      -S /etc/varnish/secret \ 
      -s malloc,256m" 
    EOM 

回答

2

使用引号在这里-doc的标识,以避免shell扩展

cat >> /etc/default/varnish <<-'EOM' 
DAEMON_OPTS="-a :80 \                                 -T localhost:6082 \ 
      -f /etc/varnish/default.vcl \ 
      -S /etc/varnish/secret \ 
      -s malloc,256m" 
EOM 

man bash

如果文字中有任何字符是引用,分隔符是对单词的引用删除的结果,并且 here-document中的行不会被展开。

+1

不希望''''“要结束文件”? –

+0

谢谢,确实应该使用'>>'来附加到文件。 – anubhava

+0

如果我申请这样的: #/斌/庆典 猫>>在/ etc /默认/清漆>> - 'EOM' DAEMON_OPTS =“ - 一:80 \ -T本地主机:6082 \ -f /etc/varnish/default.vcl \ -S/etc/varnish/secret \ -s malloc,256m“ EOM 我可以看到,终端挂起没有任何错误,直到我终止它。 – funguy