我有程序(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
有什么想法吗?
最佳答案
我找到了解决方案:
flash_erase /dev/mtd1 0 0 | stdbuf -i0 -o0 -e0 tr '\r' '\n' | while read -r line; do
something $line
done
关于linux - 在 bash 中捕获不带换行符的程序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514497/