我有一个程序(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
有什么想法吗?
答案 0 :(得分:0)
我找到了解决方法:
flash_erase /dev/mtd1 0 0 | stdbuf -i0 -o0 -e0 tr '\r' '\n' | while read -r line; do
something $line
done