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.sh
destdout
(qui, selon l'extrait manuel devrait se produire en premier), puis permettregrep
de traiter de scriptstderr
. Au lieu de cela,stderr
et tdout` finissent tous les deux dansstdout_goes_here