De acordo com " Linux: a referência completa, 6ª edição " (pág. 44), você pode canalizar apenas o STDERR usando os |&
símbolos de redirecionamento.
Eu escrevi um script bastante simples para testar isso:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
Eu executo esse script assim:
./script.sh |& sed 's:^:\t:'
Presumivelmente, apenas as linhas impressas em STDERR serão recuadas. No entanto, ele realmente não funciona assim, como eu vejo:
Normal Text.
Error Text.
O que eu estou fazendo errado aqui?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'
não funcionar conforme pretendido, ou seja: redirecionamentoscript.sh
'sstdout
(o que, de acordo com o trecho manual deve acontecer primeiro), em seguida, permitirgrep
processar o script destderr
. Em vez disso,stderr
e tdout` terminam emstdout_goes_here