Secondo " Linux: The Complete Reference 6th Edition " (pag. 44), è possibile reindirizzare solo STDERR utilizzando i |&
simboli di reindirizzamento.
Ho scritto uno script abbastanza semplice per testare questo:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
Eseguo questo script in questo modo:
./script.sh |& sed 's:^:\t:'
Presumibilmente, verranno indentate solo le righe stampate su STDERR. Tuttavia, in realtà non funziona in questo modo, come vedo:
Normal Text.
Error Text.
Cosa sto facendo di sbagliato qui?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'
non funziona come previsto, vale a dire: redirectscript.sh
'sstdout
(che, secondo il frammento di manuale dovrebbe accadere prima), quindi lasciaregrep
per elaborare la sceneggiatura distderr
. Invece,stderr
e tdout` finiscono entrambi instdout_goes_here