使用命令替换保留 bash heredoc 中的空行

使用命令替换保留 bash heredoc 中的空行

如何维护 (或以其他方式控制) heredoc 中命令的尾随空行 (在 bash 中)?随后的非空行的空行被正确保留。

考虑:

$ cat <<EOF
> $(echo -en "hi\n\n")
> EOF
hi
$ cat <<EOF
> $(echo -en "hi\n\nfoo\n")
> EOF
hi

foo
$

后面的空白hi行去哪儿了?我怎样才能保留它?

直接调用echo就可以得到想要的结果:

$ echo -en "hi\n\n"
hi

$

根据我的调查,这发生在命令替换中,但不发生在变量中...有什么想法为什么吗?

$ x=$'hi\n'
$ cat <<EOF
> ${x}
> EOF
hi

$

相关内容