write vars sysout standard simple script error and bash redirect

sysout - vars bash



Duplicar stdout a stderr (5)

Para redireccionar a stderr, usaría >&2 o >/dev/stderr . Para replicar la salida, usaría tee . El inconveniente es que se necesita un archivo temporal:

echo "FooBar" | tee /tmp/stdout >&2 ; cat /tmp/stdout

Me gustaría que el stdout de un comando se repita en stderr también en bash. Algo como:

$ echo "FooBar" (...) FooBar FooBar $

donde (...) es la expresión de redirección. ¿Es eso posible?


Si puedo expandir la respuesta de @defdefred , para líneas múltiples que estoy usando

my_commmand | while read line; do echo $line; echo $line >&2; done

Tiene la "ventaja" de no requerir / llamar a tee y usar incorporaciones.


Use tee con / dev / stderr:

echo "FooBar" | tee /dev/stderr

o use awk / perl / python para hacer la replicación manualmente:

echo "FooBar" | awk ''{print;print > "/dev/stderr"}'' echo "FooBar" | perl -pe "print STDERR, $_;"


Utilice la sustitución de procesos: http://tldp.org/LDP/abs/html/process-sub.html

echo "FooBar" | tee >(cat >&2)

Tee toma un nombre de archivo como parámetro y duplica la salida a este archivo. Con la sustitución de procesos puede usar un proceso en lugar de nombre de archivo >(cat) y puede redirigir el resultado de este proceso a stderr >(cat >&2) .


echo "FooBar" |tee /dev/stderr tee: /dev/stderr: Permission denied

no funciona con RedHat 6.3

echo "FooBar" | ( read A ; echo $A ; echo $A >&2)

está trabajando