我刚看到一个站点上的示例,它将awk命令的输出传递给以下命令:
(echo "this is a header";cat -)
Run Code Online (Sandbox Code Playgroud)
这有效地将输出顶部的标题字符串添加到了..似乎 - 代表stdout.虽然这个结构是什么?括号,然后猫 - ?这是如何工作的,这似乎非常有用,但这是我第一次看到它..
这里括号的使用是“分组构造”——请参阅bash 参考手册中的详细信息
类似的构造使用大括号:
{ echo "this is a header"; cat -; }
Run Code Online (Sandbox Code Playgroud)
这是不同的语法,需要在大括号和尾随分号周围留有空格。
使用大括号和括号的区别是:大括号中的命令列表在当前shell 中运行,括号中的命令列表在子shell中运行。如果您希望命令列表改变您的环境,这一点很重要——当子 shell 退出时,环境更改将丢失。