Eu sei que existe a possibilidade de usar tee
para copiar o conteúdo da saída para um arquivo e ainda enviar para o console.
No entanto, não consigo encontrar uma maneira de preparar scripts de shell (como um modelo fixo) sem usar tee
para cada comando no script ou para executar o script usando um pipe para tee
.
Assim, eu tenho que começar a chamar o script toda vez com um pipe to tee
em vez de fazer isso automaticamente para mim por meio do script.
Eu tentei usar um shebang modificado usando um tubo, mas não obtive sucesso e não consigo encontrar uma maneira de fazer isso.
Então, em vez de chamar o script assim:
./myscript.sh |& tee scriptout.txt
Eu gostaria de ter o mesmo efeito apenas chamando assim:
./myscript
Claro que o script precisa saber o nome do arquivo que está definido em uma variável dentro do script.
Como posso fazer isso?
Você pode envolver o conteúdo do seu script em uma função e canalizar a saída das funções para
tee
:Você provavelmente pode fazer algo como definir a saída no início do script usando
exec
. (Eu não testei isso muito fortemente.)Exemplo, supondo que o script seja chamado
demo
e tenha se tornado executável comchmod a+x demo
: