Come posso ottenere il codice di uscita di wget
dal processo di subshell?Ottieni il codice di uscita da subshell attraverso le pipe
Quindi, il problema principale è che $?
è uguale a 0. Dove è possibile creare $?=8
?
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "$?"
0
funziona senza tee
, in realtà.
$> OUT=$(wget -q "http://budueba.com/net"); echo "$?"
8
Ma ${PIPESTATUS}
array (io non sono sicuro che è legato a quel caso) anche non contiene tale valore.
$> 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
Quindi, la mia domanda è - come posso ottenere wget
s' codice di uscita attraverso tee
e subshell?
Se può essere utile, la mia versione di bash è 4.2.20
.
Ma è possibile esportare tutte le '$ {PIPESTATUS}' matrice fino alla shell del genitore? –
Non funziona come ['export'] (http://www.gnu.org/software/bash/manual/bashref.html#Environment) - esporta le variabili come variabili d'ambiente per i processi * child * (dal genitore). –
Ecco una [soluzione per portare l'intero array '$ {PIPESTATUS [@]}' nello script genitore] (https://stackoverflow.com/questions/41716616/get-exit-codes-of-a-pipe- quando-uscita-è-assigned-to-variabili-comando-substituti/44.314.883 # 44.314.883). Implica l'aggiunta alla fine della variabile creata e quindi la estrae in una nuova matrice. –