Comprobar si un comando falla: ¿después de las redirecciones o antes?

Comprobar si un comando falla: ¿después de las redirecciones o antes?

Tenemos un script SQL que ejecutamos mientras redirigimos STDOUT y STDERR a dos archivos separados. Debido a problemas recientes con el script SQL, queremos salir del script con un error en caso de que el script SQL provoque que se devuelva un error.

Actualmente se lee:

executeHiveSql insertEvent.sql --hivevar Date=${DATEYMD} > logs/inesrtEvent"${DATEYYYYMMDD}".log 2>logs/insertEvent"${DATEYYYYMMDD}".err

Para manejar el error de esta consulta SQL, quiero agregar una verificación condicional. ¿Lo pongo antes o después de las redirecciones? ES DECIR

executeHiveSql insertEvent.sql --hivevar Date=${DATEYMD} > logs/inesrtEvent"${DATEYYYYMMDD}".log 2>logs/insertEvent"${DATEYYYYMMDD}".err || { echo 'Process FAILED! Please check the logs.' ; log $AUTO_JOB_NAME "Failure" 1 "Archive process FAILED..."; exit 1; }

o

executeHiveSql insertEvent.sql --hivevar Date=${DATEYMD} || { echo 'Process FAILED! Please check the logs.' ; log $AUTO_JOB_NAME "Failure" 1 "Archive process FAILED..."; exit 1; } > logs/inesrtEvent"${DATEYYYYMMDD}".log 2>logs/insertEvent"${DATEYYYYMMDD}".err

Respuesta1

Esto no responde directamente a su pregunta sobre el orden, pero si la construcción que está utilizando es difícil de entender, le sugiero que utilice una construcción más simple. No hay premios por hacer que todo sea de una sola línea :)

if ! executeHiveSql ... > ... 2> ...; then
    echo "Process FAILED!..."
    log ...
    exit 1
fi

información relacionada