Selon " Linux: The Complete Reference 6th Edition " (p. 44), vous ne pouvez diriger que STDERR en utilisant les |&symboles de redirection.
J'ai écrit un script assez simple pour tester ceci:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
Je lance ce script comme ceci:
./script.sh |& sed 's:^:\t:'
Vraisemblablement, seules les lignes imprimées dans STDERR seront en retrait. Cependant, cela ne fonctionne pas vraiment comme ça, comme je le vois:
Normal Text.
Error Text.
Qu'est-ce que je fais mal ici?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'ne fonctionne pas comme prévu, à savoir: redirectscript.shdestdout(qui, selon l'extrait manuel devrait se produire en premier), puis permettregrepde traiter de scriptstderr. Au lieu de cela,stderret tdout` finissent tous les deux dansstdout_goes_here