Verificando se um comando falha - Após redirecionamentos ou antes?

0

Temos um script SQL que executamos ao redirecionar STDOUT e STDERR para dois arquivos separados. Devido a problemas recentes com o script SQL, queremos sair do script com um erro no caso de o script SQL causar um erro a ser retornado.

Atualmente, lê-se:

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

Para lidar com a falha desta consulta SQL, quero adicionar uma verificação condicional. Eu coloco isso antes dos redirecionamentos ou depois? I.E.

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; }

ou

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
    
por Nanor 30.11.2017 / 15:43

1 resposta

1

Isso não responde diretamente a sua pergunta sobre o pedido, mas se o constructo que você está usando é difícil de entender, sugiro que você use uma construção mais simples. Não há prêmios para fazer de tudo um forro:)

if ! executeHiveSql ... > ... 2> ...; then
    echo "Process FAILED!..."
    log ...
    exit 1
fi
    
por 30.11.2017 / 17:48