【发布时间】:2016-08-18 09:57:24
【问题描述】:
是否有一个 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
但是除了三个 subshell 和两只猫,这可能会为我赢得“无用的猫”奖,它还会去除换行符 - 这不好,尤其是在 <pre><code> 块中。
我想要的是这样的(显然行不通)
cat header $(markdown page.md) footer > page.html
我可以告诉 cat 使用 subshell 的输出来读取其中一个文件。理想情况下,无需设置任何临时文件、命名管道等。
【问题讨论】:
-
如果 bash 支持 process substitution,这也可以工作:
cat header <(markdown page.md) footer > page.html注意:除非您的 bash 是古老的,否则它将支持进程替换。