То, что Вы, вероятно, хотят, является PIPESTATUS (от удара человека:)
An array variable (see Arrays below) containing a list of exit status
values from the processes in the most-recently-executed foreground pipeline
(which may contain only a single command).
Я решил проблему, поскольку предложенный Fabian (благодарит Вас еще раз). Однако я не был доволен всей конструкцией потока данных. В конце концов, это - Zenity, который должен контролировать прогресс работы; мне не придется изогнуть мою всю программу только для создания этого счастливым.
Так, я изменил весь рабочий процесс. Сначала я создаю именованный канал для передачи продвижения к Zenity и затем работ Zenity, как он должен (как монитор). Таким образом, я звоню:
(tail -f my_named_pipe) | zenity .... &
и когда я хочу установить маркировку или прогресс, я просто звоню
echo "# We are cruising..." > my_named_pipe
Если я сделан с прогрессом, я отправляю "100" в Zenity. Это позволяет моему основному сценарию работать линейным способом, не вызывая беспокойство о передающих данных из подпроцесса, потому что нет никакого подпроцесса теперь.