¿Cómo puedo obtener el código de salida wget
del proceso de subshell?Obtenga el código de salida de subshell a través de las tuberías
Entonces, el principal problema es que $?
es igual a 0. ¿Dónde se puede encontrar $?=8
?
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "$?"
0
Funciona sin tee
, en realidad.
$> OUT=$(wget -q "http://budueba.com/net"); echo "$?"
8
Pero ${PIPESTATUS}
array (no estoy seguro de que está relacionado con ese caso) tampoco contiene ese valor.
$> 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
lo tanto, mi pregunta es - ¿Cómo puedo obtener wget
's código de salida a través tee
y subnivel?
Si puede ser útil, mi versión de bash es 4.2.20
.
pero ¿es posible exportar todos los '$ {PIPESTATUS}' matriz de arriba para el shell de los padres? –
No es así como funciona ['export'] (http://www.gnu.org/software/bash/manual/bashref.html#Environment): exporta variables como variables de entorno para procesos * child * (desde el padre) –
Aquí hay una [solución para llevar toda la matriz '$ {PIPESTATUS [@]}' al script principal] (https://stackoverflow.com/questions/41716616/get-exit-codes-of-a-pipe- when-output-is-assigned-to-variable-command-substituti/44314883 # 44314883). Implica agregarlo al final de la variable creada y luego extraerlo en una nueva matriz. –