命令分组和流水线有什么区别?

命令分组和流水线有什么区别?

我不明白命令分组和流水线之间的区别

答案1

它们之间的区别是:

( foo; bar; )

它将执行 中的命令subshell,因此如果你在子 shell 中做了任何更改,它们都不会出现在 之外subshell。例如

i=2; ( ((i++)); echo $i ); echo $i

你将获得输出:

3
2

如果你在中执行相同的操作,{ }那么它将在相同的环境中执行,因此更改将起作用。例如

i=2; { ((i++)); echo $i; }; echo $i

会给:

3
3

现在让我们讨论流水线,流水线用于获取输入并将输出提供给某些命令。因此命令:

a | b

命令的输出a将作为命令的输入b

echo "hi" | cat

将为您提供输出hi。因此echo "hi"ie的输出hi将是cat命令的输入。

相关内容