2016-01-21 163 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