在Unix中粘贴没有临时文件

Oli*_*ver 25 unix shell redirect pipe

我正在尝试使用Unix命令粘贴,这就像是一个列附加形式的cat,并且遇到了一个我从未知道如何在Unix中解决的难题.

如何使用两个不同程序的输出作为另一个程序的输入(不使用临时文件)?

理想情况下,我会这样做(不使用临时文件):

./progA> tmpA; ./progB> tmpB; 粘贴tmpA tmpB

对我来说这似乎相对频繁,但我无法弄清楚如何使用两个不同程序(progAprogB)的输出作为另一个程序的输入而不使用临时文件(tmpAtmpB).

对于像paste一样的命令,只需使用paste $(./ progA)$(./ progB)(用bash表示法)就不会有效,因为它可以从文件或stdin中读取.

我对临时文件持谨慎态度的原因是我不想让并行运行的作业因使用同一个文件而导致问题; 确保唯一的文件名有时很困难.

我目前正在使用bash,但很想知道任何Unix shell的解决方案.

最重要的是,我是否以正确的方式解决问题?


干杯!

Bal*_*sár 52

你不需要bash下的临时文件,试试这个:

paste <(./progA) <(./progB)
Run Code Online (Sandbox Code Playgroud)

请参阅Bash手册中的"过程替换".