cat 多个文件和子shell

cat multiple files and subshell

是否有一个 shell 命令可以执行以下操作:

cp header page.html
markdown page.md >> page.html
cat footer >> page.html

(Markdown 默认输出到标准输出。)

有同事建议

echo $(cat header) $(markdown page.md) $(cat footer) >> page.html

但是除了三个 subshells 和两只猫,这可能会为我赢得一个 "useless use of cat" 奖项,它还会去除换行符 - 这不好,特别是在 <pre><code>块。

我想要的是这样的(显然行不通)

cat header $(markdown page.md) footer > page.html

我可以告诉 cat 使用 subshell 的输出来读取其中一个文件。理想情况下不设置任何临时文件、命名管道等

应该这样做:

(cat header;  markdown page.md;  cat footer) >   page.html

因为你只有一个子 shell,所以我会使用这个 :

markdown page.md | cat header - footer > page.html

cat 参数中的 - 指的是标准输入,由 markdown 命令填充。

如果您有多个子 shell,我建议使用 anishane 评论的解决方案,进程替换:

cat header <(markdown page1.md) <(markdwon page2.md) footer > page.html