Да, это так. Но для этого сначала нужно сохранить stdout
в другом дескрипторе для всего вызова и для подстановки команд;перенаправить 3
на его stdout
- так, что записанное в него может быть захвачено - и его stdout
на stdout
всего вызова. Например:
{ myvalue=$(myfunction 3>&1 1>&4); } 4>&1
Выполнение этого для каждого вызова этой функции звучит как большая работа. Вам лучше следовать соглашению, что:
- используйте
stderr
для сообщения об ошибках, предупреждениях и отладочной информации (включая журналы и приглашения), - используйте
stdout
для отображения результатов, - и используйте оператор
return
для обозначения общего успеха / неудачи.