Eu gostaria de ter uma função de log que levasse nomes de arquivos como argumentos e replicasse o stdout para todos esses arquivos. Isto é o que eu cheguei até agora:
function logger() {
exec > >(tee -ia /var/log/{log1,log2})
}
Quando tento substituir {log1,log2}
por {$*}
, recebo os argumentos separados por espaço. Então, pensei em fazer algo assim:
function logger() {
exec > >(IFS=,; tee -ia /var/log{"$*"}
}
Isso não faz o que eu quero, pois a expansão de chaves acontece antes de passar para a substituição de variável. Então, pensei que poderia fazer isso:
function logger() {
exec > >(IFS=,; eval "tee -ia /var/log/\{$*\}")
}
Mas isso se comporta da mesma forma, ou seja, logger one two
cria um único arquivo chamado {one,two}
.
Por que é que? Como posso fazer com que a expansão de chaves funcione para que tee
grave em vários arquivos?