通常,我们只需要传递一个参数:
echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
有没有办法传递两个参数?就像是
{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
我可以先将结果存储在一个文件中
echo abc > file1
echo xyz > file2
cat file1 file2
但后来我可能不小心覆盖了一个文件,这是不行的。这将进入非交互式脚本。基本上,我需要一种方法将两个任意命令的结果传递给 cat
无需写入文件。
更新:
对不起,该示例掩盖了问题。而 { echo abc ; echo xyz ; } | cat
似乎确实有效,输出是由于 echo
s,而不是 cat
。
一个更好的例子是 { cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,
哪个不能按预期工作。
同
file1:
a,b
c,d
file2:
1,2
3,4
预期产出是:
b,1
d,3
解决:
使用 过程替代 : cat <(command1) <(command2)
或者,使用命名管道 mkfifo
:
mkfifo temp1
mkfifo temp2
command1 > temp1 &
command2 > temp2 &
cat temp1 temp2
不太优雅,更冗长,但工作正常,只要你确保temp1和temp2不存在。