在bash中捕获没有换行符的程序输出

时间:2018-11-28 07:47:11

标签: linux bash

我有一个程序(flash_erase),将其输出打印到STDOUT,但没有换行符。这是打印进度的常用方法。

例如:

Erasing 4 Kibyte @ 0 -- 0 % complete

只有在过程完成时,我才换行:

Erasing 4 Kibyte @ 1f000 -- 100 % complete

我该如何将进度传递到另一个脚本。我可以使用tr将\ r替换为\ n,但仍然无法正常工作。程序完成后处理输出。

flash_erase /dev/mtd1 0 0 | tr '\r' '\n' | while read line; do
    some_program $line;
done

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

flash_erase /dev/mtd1 0 0 | stdbuf -i0 -o0 -e0 tr '\r' '\n' | while read -r line; do
    something $line
done