Jak uzyskać kod zakończenia wget
z procesu podpowłoki?Uzyskaj kod wyjścia z podpowłoką przez rurki
Głównym problemem jest to, że $?
ma wartość 0. Gdzie można założyć $?=8
?
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "$?"
0
Działa bez tee
, rzeczywiście.
$> OUT=$(wget -q "http://budueba.com/net"); echo "$?"
8
Ale ${PIPESTATUS}
array (nie jestem pewien, jest to związane z tym sprawy) również nie zawiera tę wartość.
$> 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
Więc moje pytanie jest - jak można uzyskać wget
„s kod wyjścia poprzez tee
i podpowłoki?
Jeśli to może być pomocne, moja wersja bash to 4.2.20
.
ale jest to możliwe, aby wyeksportować wszystkie '$ {PIPESTATUS}' tablicę górę do powłoki rodzica? –
To nie działa ['export'] (http://www.gnu.org/software/bash/manual/bashref.html#Environment) - eksportuje zmienne jako zmienne środowiskowe dla procesów * potomnych * (od rodzica)). –
Oto rozwiązanie umożliwiające przeniesienie całej tablicy '$ {PIPESTATUS [@]}' do skryptu nadrzędnego] (https://stackoverflow.com/questions/41716616/get-exit-codes-of-a-pipe- gdy-output-is-assign-to-variable-command-substituti/44314883 # 44314883). Polega na dodaniu go na końcu utworzonej zmiennej, a następnie przeniesieniu jej do nowej tablicy. –