Altera o dispositivo de saída stdout / stderr

0

Por padrão, se nós executarmos

foo(){
  echo "myfoo"
}

irá para stdout. Minha pergunta é, para um script ou função bash, existe uma maneira programática de alterar o dispositivo para que os comandos não gravem automaticamente no stdout?

talvez algo assim:

foo(){
  mkfifo bar
  exec 1<>bar
  echo "myfoo"  # this gets written to the bar named pipe?
}

então "reencontramos" o stdout em algum outro lugar, talvez?

    
por Alexander Mills 08.05.2018 / 06:36

1 resposta

0

Esta técnica provavelmente fará o truque: Usando a substituição de processos, envie stderr para processar

Basicamente, você chama:

exec > $some_file

usando a substituição do processo, você pode fazer algo como:

exec > >( while read line; do echo " stdout: $line"; done )

isso significa que todos os stdout irão para o arquivo em vez de para o terminal.

    
por 08.05.2018 / 06:50