2016-12-27 54 views
0

我想在特定字符串出現後插入多行文本。 預期的輸出是:用EOF,EOT,EOL追加多行製表符分隔文本形式bash腳本

configuration options: 
<tab>option 1 
<tab>option 2 
<tab>option 3 
<tab>option 4 
<tab>option 5 
<tab>option 6 
<tab>option 7 
<tab>option 8 
<tab>option 9 
<tab>option 10 
<tab>option 11 
<tab>option 12 

除了從所述第一所有線與製表符分隔。 我不想用幾個echo命令來做到這一點。 我更喜歡EOF,EOT,EOL,但是這些不寫標籤。

目前我使用的是:

cat >> /etc/conf/conf.conf <<-EOF 
    <tab>configuration options 
    <tab><tab>option 1 
    <tab><tab>option 2 
    <tab><tab>option 3 
    <tab><tab>option 4 
    <tab><tab>option 5 
    <tab><tab>option 6 
    <tab><tab>option 7 
    <tab><tab>option 8 
    <tab><tab>option 9 
    <tab><tab>option 10 
    <tab><tab>option 11 
    <tab><tab>option 12 
    EOF 

但第二個標籤被忽略,不寫我的文件。

+0

什麼是預期的輸出? –

+0

提供最少的輸入和可驗證的預期輸出。 – Inian

回答

0

從該行中刪除短劃線(-):

cat >> /etc/conf/conf.conf <<-EOF 

而,也許,使用更好的名稱爲EOF:

cat >> /etc/conf/conf.conf <<_list_of_options_ 
configuration options 
<tab>option 1 
<tab>option 2 
<tab>option 3 
<tab>option 4 
<tab>option 5 
<tab>option 6 
<tab>option 7 
<tab>option 8 
<tab>option 9 
<tab>option 10 
<tab>option 11 
<tab>option 12 
_list_of_options_ 
0

bash允許下面的語法中,類似於EOF其中在單引號的字符串不是在所有修改:

cat >> /etc/conf/conf.conf <<<'configuration options 
<tab>option 1 
<tab>option 2 
<tab>option 3 
<tab>option 4 
' 
0

其實我發現它作爲上述答案的組合: 爲了保持標籤分隔符,我不得不刪除「 - 」前EOF,並從每行中刪除一個標籤:

cat >> /etc/conf/conf.conf <<EOF 
configuration options 
<tab>option 1 
<tab>option 2 
<tab>option 3 
<tab>option 4 
<tab>option 5 
<tab>option 6 
<tab>option 7 
<tab>option 8 
<tab>option 9 
<tab>option 10 
<tab>option 11 
EOF