将多行变量切换到heredoc

问题描述 投票:0回答:1

我正在尝试将多行变量添加到将被放入 Markdown 文件中的定界文档中。

我的脚本如下所示:

markdown=$(cat <<-EOF
<details>
    <summary>TEST</summary>

    ${output}
</details>
EOF
)

echo "$markdown" >> test.md

其中

output
是多行字符串:

this
is a
multiline
string

当我运行脚本时,输出如下所示:

<details>
    <summary>TEST</summary>

    this
is a
multiline
string
</details>

我怎样才能得到它,以便不仅仅是输出变量的第一行被正确标记?我尝试通过 sed 运行变量并添加选项卡,但这不起作用

bash markdown eof heredoc
1个回答
0
投票

你必须缩进它。你自己。例如,使用 sed 在每行前面添加 4 个空格:

cat <<-EOF
<details>
    <summary>TEST</summary>

$(sed 's/^/    /' <<<"$output")
</details>
EOF

您可以用换行符和 4 个空格替换换行符:

cat <<-EOF
<details>
    <summary>TEST</summary>

    ${output//$'\n'/$'\n'    }
</details>
EOF
© www.soinside.com 2019 - 2024. All rights reserved.