在 bash 中,您可以使用管道将相同的输出传输到两个命令{}
,即如下所示:
cmd0 | { cmd1 ; cmd2 ;} | cmd3
cmd1 和 cmd2 在其 stdin 中获取 cmd0 的输出,cmd3 在其 stdin 中获取附加到 cmd2 输出的 cmd2 输出。
这个功能的名称是什么{}
?鱼中有类似的功能吗?
答案1
该功能称为命令分组。
在里面鱼壳,它似乎是通过使用begin
andend
代替 bash{
和}
大括号来提供的 - 我只是从错误报告中发现的一个功能:
请注意,无论 shell 如何,第一个能够执行此操作的命令将使用标准输入 ex。
( bash
):
$ echo foo | { sed 's/oo/aa/'; sed 's/oo/um/'; }
faa
( fish
):
> echo foo | begin sed 's/oo/aa/'; sed 's/oo/um/'; end
faa
但
> echo foo | begin echo cmd1 ; sed 's/oo/um/'; end
cmd1
fum