Me preguntaba si era posible decirle a bash que todas las llamadas a echo
o printf
deberían ser seguidas por una llamada posterior a fflush()
en stdout/stderr, respectivamente?Forzar una secuencia de comandos shell para fflush
Una solución rápida y sucia sería escribir mi propia implementación de printf que hiciera esto y usarla en lugar de cualquiera de las integradas, pero se me ocurrió que no era necesario.
Estoy escribiendo varios scripts de compilación que se ejecutan a la vez, para las necesidades de depuración I realmente necesito ver los mensajes que escriben en orden.
No, que yo sepa, creo que BASH está completamente basado línea de lo que hará que se vacíe el línea por línea, pero no más. ¿Hay una necesidad de no tirar en las nuevas líneas? –
@Robert - Sí, tengo que eliminar los errores de sincronización como un culpable, por lo tanto, tengo que asegurarme de que cada escritura en stderr/stdout haga que la secuencia se vacíe. –
Agarrando pajillas: me pregunto si sería útil establecer algo usando 'stty'. O usando el script 'expect' llamado' unbuffer'. O estableciendo Bash's 'PS4' para incluir' $ (date "+% s.% N") '(aunque hay un poco de sobrecarga allí) y usando' set -x' y ordenando el resultado. Tal vez algo usando 'trap 'foo' DEBUG. ¿Proporciona [this] (http://www.pixelbeat.org/programming/stdio_buffering/) alguna información útil? O algo [aquí] (http://stackoverflow.com/questions/1507674/how-to-add-timestamp-to-stderr-redirection)? –