我不明白命令分组和流水线之间的区别
答案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
命令的输入。