Fish 相当于命令序列 -- { cmd1 ; cmd2; }

Fish 相当于命令序列 -- { cmd1 ; cmd2; }

在 bash 中,您可以使用管道将相同的输出传输到两个命令{},即如下所示:

cmd0 | { cmd1 ; cmd2 ;} | cmd3

cmd1 和 cmd2 在其 stdin 中获取 cmd0 的输出,cmd3 在其 stdin 中获取附加到 cmd2 输出的 cmd2 输出。

这个功能的名称是什么{}?鱼中有类似的功能吗?

答案1

该功能称为命令分组

在里面鱼壳,它似乎是通过使用beginandend代替 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

相关内容