if unit_test
then
vim result.log
fi
o incluso mejor:
unit_test && vim result.log
Pero a veces tenemos un pipeline:
unit_test | grep -v Time && vim result.log
El problema acá es que el error code de unit_test se pierde, y el "&&" utiliza el error code del grep, que no es lo que queremos.
Pues bien. Hoy descubrí (should RTFM more often) que existe una variable PIPESTATUS que guarda todos los error codes de todo el pipeline:
unit_test | grep -v Time
if [ ${PIPESTATUS[0]} -eq 0 ]
then
vim report.log
fi
Esta variable es un array que guarda un error code por cada comando en el pipe.
No hay comentarios:
Publicar un comentario