2

我有一个脚本,我想做与此等效的操作:

脚本 | 另一个程序

但从脚本中。我不想调用

我的子任务 | 另一个程序

每次我必须在我的脚本中运行我的子任务时,我只想启动过滤器并将我的所有 OUT 和 ERR 路由到它(脚本不是交互式的)。

所以最后我想做的是

  1. 将 OUT & ERR 设置为另一个程序的输入。anotherprogram 只会为脚本的一个实例运行,以便我的所有输出都转到它。
  2. 正常运行我的脚本的其余部分,我的后续回声和子任务输出的 OUT 和 ERR 连续进入另一个程序(我只希望另一个程序运行一次,即在我的脚本的整个其余部分)
4

1 回答 1

4

我可以看到有两种简单的方法可以实现这一目标。首先,您可以使用带括号的子shell:

(
  echo hello
  echo world
) 2>&1 | anotherprogram

或者您可以使用exec重定向脚本顶部的各种文件描述符

exec > >( anotherprogram ) # send stdout to anotherprogram
exec 2>&1                  # merge stderr into stdout

echo hello
echo world
于 2013-05-20T09:35:00.023 回答