Le même effet peut être réalisé assez facilement avec un fifo. Je ne suis pas au courant de la tuyauterie de la syntaxe pour le faire (même si ce serait chouette de voir un). C'est la façon dont vous pourriez le faire avec une fifo.
Tout d'abord, quelque chose qui imprime à la fois stdout
et stderr
, outerr.sh
:
#!/bin/bash
echo "This goes to stdout"
echo "This goes to stderr" >&2
Ensuite, nous pouvons faire quelque chose comme ceci:
$ mkfifo err
$ wc -c err &
[1] 2546
$ ./outerr.sh 2>err | wc -c
20
20 err
[1]+ Done wc -c err
De cette façon, vous configurez le port d'écoute pour stderr
sortie en premier et il bloque jusqu'à ce qu'un écrivain qui se passe dans la commande suivante, en utilisant la syntaxe 2>err
. Vous pouvez voir que chaque wc -c
obtenu 20 caractères d'entrée.
N'oubliez pas de nettoyer la fifo après vous avez terminé, si vous n'avez pas envie de traîner (c - rm
). Si l'autre veut d'entrée de commande sur stdin
et non pas un fichier arg, vous pouvez utiliser la redirection d'entrée comme wc -c < err
trop.