Как сказал DigitalRoss, все stdout отправляются в одно и то же место, и трубопроводы и ти работают независимо от того, насколько глубоко вложены функции и сценарии (вплоть до системных ограничений).В демонстрационном примере ниже функция f4
демонстрирует один из способов, а f5
- другой.
$ f1 () { echo f1; }
$ f2 () { echo f2; }
$ f3 () { echo f3; f1; }
$ f4 () { echo f4; f2; f3; }
$ f4
f4
f2
f3
f1
$ f4 | tee tee.out
f4
f2
f3
f1
$ cat tee.out
f4
f2
f3
f1
$ f5 () { { echo f4; f2; f3; } | tee tee2.out; }
$ f4 | tee tee.out
f4
f2
f3
f1
$ cat tee.out
f4
f2
f3
f1