Enviado em 17/08/2017 - 12:16h
como faço para exibir a saída de um comando na tela (terminal) e, ao mesmo tempo, armazenar os erros desse comando em uma variável?
não necessariamente precisa ser apenas os erros a serem armazenados em uma variável; pode ser armazenado nessa variável tudo o que é exibido na tela.
um script ilustrativo que reproduz meu problema:
quando "nomearquivo.zip" é um arquivo ".zip" protegido por senha, assim, é exibido uma mensagem de erro na tela que gostaria que fosse armazenada em uma variável.
consigo resultados diferentes alterando a linha "k=$(eval unzip $f)", mas, até agora, nenhum resolve meu problema.
por exemplo:
ou seja, como fazer para que as mensagens exibidas na tela (ou, no mínimo, as mensagens de erro) sejam também armazenadas, ao mesmo tempo, na variável?
não necessariamente precisa ser apenas os erros a serem armazenados em uma variável; pode ser armazenado nessa variável tudo o que é exibido na tela.
um script ilustrativo que reproduz meu problema:
f="nomearquivo.zip"nesse código acima são exibidas mensagens na tela, porém, nenhuma dessas mensagens são armazenadas na variável.
k=$(eval unzip $f)
echo "variável: $k"
quando "nomearquivo.zip" é um arquivo ".zip" protegido por senha, assim, é exibido uma mensagem de erro na tela que gostaria que fosse armazenada em uma variável.
consigo resultados diferentes alterando a linha "k=$(eval unzip $f)", mas, até agora, nenhum resolve meu problema.
por exemplo:
k=$(eval unzip $f) # não mostra tudo na tela, e não armazena os erros (armazena uma das mensagem que deveria ser exibida na tela);
k=$(eval unzip $f 1>&2) # mostra tudo corretamente na tela (inclusive os erros), mas não armazena os erros (armazena nada);
k=$(eval unzip $f 2>&1 ) # armazena os erros corretamente, mas não mostra nada na tela.
ou seja, como fazer para que as mensagens exibidas na tela (ou, no mínimo, as mensagens de erro) sejam também armazenadas, ao mesmo tempo, na variável?