Não é possível determinar porque o código de saída não está sendo registrado

3

Estranho, então o seguinte não registrará "bash exit code ..."

#!/usr/bin/env bash

OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log

npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 &&
export NODE_PATH=${NODE_PATH}:~/.suman/node_modules &&
node $(dirname "$0")/test.js &&

EXIT=$? &&
echo " " && # newline
echo "bash exit code => $?" &&
exit ${EXIT}

se eu remover um "& &" após o comando node da seguinte forma:

#!/usr/bin/env bash

OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log

npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 &&
export NODE_PATH=${NODE_PATH}:~/.suman/node_modules &&
node $(dirname "$0")/test.js  # <<<<< removed "&&" chars

EXIT=$? &&
echo " " && # newline
echo "bash exit code => $?" &&
exit ${EXIT}

então o processo do nó sairá com um código diferente de zero, mas então o bash diz:

bash exit code => 0

ambos não estão dando resultados corretos, há algo errado com o meu código. Eu quero capturar o código de saída correto do processo do nó e quero imprimi-lo! O que poderia estar errado?

    
por Alexander Mills 20.12.2016 / 09:21

1 resposta

6

$? é o status de saída do seu último comando. Nesse caso, sempre retorna 0 porque echo " " foi bem-sucedido. Por favor, use $EXIT em vez de $?

#!/usr/bin/env bash

OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log

npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 &&
export NODE_PATH=${NODE_PATH}:~/.suman/node_modules &&
node $(dirname "$0")/test.js  # <<<<< removed "&&" chars

EXIT=$? &&
echo " " && # newline
echo "bash exit code => $EXIT" &&
exit ${EXIT}
    
por 20.12.2016 / 09:31