Exibe a saída da execução $ () [fechada]

0

Eu tenho o comando abaixo que eu usei para executar sem $() , mas eu tenho que, a fim de capturar o código de retorno do script remoto. O problema é que agora não vejo a saída do comando, a menos que eu cat . Posso ver a saída durante a execução?

set -o pipefail
COMMAND=$(ssh ${RMT_HOST} ${RMT_DIR}/${SCRIPT_NAME} ${ARGUMENTS} < /dev/null |& tee -a ${RMT_EXEC_LOG})
RETCODE=$?

EDITAR Apenas para esclarecer porque uso $() aqui é um link

    
por Nir 02.04.2018 / 17:19

1 resposta

1

Se a pergunta que você está realmente perguntando é "como posso capturar e exibir a saída de um processo?", você está no caminho certo com tee , mas como os outros observei que, se você olhar mais tarde para o código de saída, inspecionando $? , você obterá o código de saída de tee e não o comando executado através dele.

É fácil armazenar a saída e ver mais tarde, mas você precisa capturar o código de saída imediatamente. Melhor, então, usar um arquivo temporário e lidar com a saída separadamente:

scratch="$(mktemp)"
trap 'rm -fr "$scratch"' EXIT
--SOME LONG COMMAND-- > "$scratch"
returncode=$?
--HANDLER FOR RETURNCODE--
cat "$scratch" >> /path/to/persistent_logfile
    
por 02.04.2018 / 18:53