附加多行制表符分隔的文本形式 bash 带有 EOF、EOT、EOL 的脚本

Append multiline tab delimited text form bash script with EOF, EOT, EOL

我想在特定字符串出现后插入多行文本。 预期输出为:

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

除了第一行以外的所有行都用制表符分隔。 我不想用几个回声命令来做到这一点。 我更喜欢 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

但是第二个选项卡被忽略了,没有写入我的文件。

bash 允许以下语法,类似于 EOF,其中单引号中的字符串根本不被修改:

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

从这一行中删除破折号 (-):

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_

实际上我发现它是上述答案的组合: 为了保留制表符分隔符,我不得不删除 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