Как я могу получить код выхода wget
из процесса подоболочки?Получить код выхода из подоболочки по трубам
Таким образом, основная проблема заключается в том, что $?
равен 0. Где можно установить $?=8
?
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "$?"
0
Это работает без tee
, фактически.
$> OUT=$(wget -q "http://budueba.com/net"); echo "$?"
8
Но ${PIPESTATUS}
массив (я не уверен, что это связанно с этим случаем) также не содержит это значение.
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[1]}"
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[0]}"
0
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[-1]}"
0
Итак, мой вопрос - как я могу получить wget
«s кода выхода через tee
и подоболочку?
Если это может быть полезно, моя версия bash - 4.2.20
.
Но можно экспортировать все '$ {PIPESTATUS}' массив вверх к родительской оболочке? –
Не работает ['export'] (http://www.gnu.org/software/bash/manual/bashref.html#Environment) - он экспортирует переменные в качестве переменных окружения для * дочерних * процессов (из родительского). –
Вот [решение для переноса всего массива '$ {PIPESTATUS [@]}' в родительский скрипт] (https://stackoverflow.com/questions/41716616/get-exit-codes-of-a-pipe- когда-выход-это назначенный к переменной-командной substituti/44314883 # 44314883). Он включает в себя добавление его в конец созданной переменной, а затем перенос его в новый массив. –