У вас почти было это:
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
(большинство приложений, включая Solaris, Linux, * BSD, OSX и Cygwin), вы можете использовать явное перемешивание fd.
{ { { myprog | tee /dev/fd/3 /dev/fd/4 |
ap1 >&2
} 3>&1 |
ap2 >&2
} 4>&1 |
ap3 >&2
}