你几乎得到了它:
myprog | tee >(ap1) >(ap2) >(ap3) >/dev/null
注意
ap1
可以是函数。如果希望函数可以访问脚本的参数,请使用
"$@"
,即
ap1 () {
# here the script arguments are available as $1, $2, ...
}
# ditto for ap2, ap3
myprog | tee >(ap1 "$@") >(ap2 "$@") >(ap3 "$@") >/dev/null
如果你的外壳不支持
>()
(bash、ksh和zsh支持,但它不是posix),但是您的操作系统仍然支持
/dev/fd
(大多数unice都可以,包括solaris、linux、*bsd、osx和cygwin),您可以使用显式的fd shuffling。
{ { { myprog | tee /dev/fd/3 /dev/fd/4 |
ap1 >&2
} 3>&1 |
ap2 >&2
} 4>&1 |
ap3 >&2
}