cat多个文件和子shell

Bri*_*tol 2 bash pipe cat

是否有单个shell命令将执行以下操作:

cp header page.html
markdown page.md >> page.html
cat footer >> page.html
Run Code Online (Sandbox Code Playgroud)

(默认情况下Markdown输出到stdout.)

一位同事建议

echo $(cat header) $(markdown page.md) $(cat footer) >> page.html
Run Code Online (Sandbox Code Playgroud)

但除了三个子壳和两只猫,这可能会让我赢得"无用的猫"奖,它也会剥夺换行线 - 这是不好的,特别是在<pre><code>街区.

我想要的是这样的东西(显然不起作用)

cat header $(markdown page.md) footer > page.html
Run Code Online (Sandbox Code Playgroud)

我可以告诉cat使用子shell的输出来读取其中一个文件.理想情况下,无需设置任何临时文件,命名管道等.

Aar*_*ron 6

由于你只有一个子shell我会用它:

markdown page.md | cat header - footer > page.html
Run Code Online (Sandbox Code Playgroud)

-catPARAMS是指标准输入,其由填充markdown命令.

如果您有多个子壳,我建议使用解决方案anishane,过程替换:

cat header <(markdown page1.md) <(markdwon page2.md) footer > page.html
Run Code Online (Sandbox Code Playgroud)

  • 只要连续处理多个子壳,你也可以使用`{markdown page1.md; markdown page2.md; } | cat header - footer> page.html`. (2认同)