TAROUTPUT=$(tar -cf arch.tar /path/to/dir 2>&1)
this_is_the_tar_exit_code=$?
No script bash que estou desenvolvendo, estou tentando executar o comando e capturar em variável (s):
como conseguir isso? O comando é tar
, se tiver algum significado.
Eu tentei a abordagem mais padrão:
TAROUTPUT=$(tar -cf arch.tar /path/to/dir)
Baseado em algum trabalho que eu fiz (eu realmente não produzi tar
failure) eu só obtenho stdout disto, stderr não é armazenado em variável. A solução perfeita tem TAROUTPUT
(com as variáveis stdout & stderr) e TARSTATUS
.
Obrigado antecipadamente.
Se você quiser separar stdout
de stderr
:
craft@engine:~$ tar -cf arch.tar /path/to/dir 1>/tmp/tar_stdout 2>/tmp/tar_stderr; RETCODE=$( echo ${?} );
craft@engine:~$ stdout_var=$( cat /tmp/tar_stdout )
craft@engine:~$ stderr_var=$( cat /tmp/tar_stderr )
craft@engine:~$ echo -e "STDOUT : ${stdout_var}\nSTDERR : ${stderr_var}\nCommand Status: ${RETCODE}"
stdout
em um arquivo temporário. stderr
output em um arquivo. ${?}
. Tags bash stdout stderr return-status