用EOF,EOT,EOL追加多行制表符分隔文本形式bash脚本

问题描述:

我想在特定字符串出现后插入多行文本。 预期的输出是:用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

从该行中删除短划线(-):

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_ 

bash允许下面的语法中,类似于EOF其中在单引号的字符串不是在所有修改:

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

其实我发现它作为上述答案的组合: 为了保持标签分隔符,我不得不删除“ - ”前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