linux - 在 bash 中捕获不带换行符的程序输出

标签 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

有什么想法吗?

最佳答案

我找到了解决方案:

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/

相关文章:

linux - 'atomicity' 在编程中的确切定义是什么?

linux - 我无法获得适用于 linux (ubuntu) 的 Openshift oc 命令行工具 32 位版本

java - 为多个用户永久设置环境变量

windows - Windows 命令提示符中不显示 Git 颜色

bash - 使用 kdialog bash 脚本创建动态选项菜单 : Printf can't do the job ? 引用问题

linux - svn,无法删除目录

linux - 文件大小超过 60K 时文件上传失败

linux - 有没有办法在保留分支名称的同时通过提交哈希使用 "git log --oneline"过滤?

linux - 为什么我的 git auto-update Expect 脚本不起作用?

bash - 如何在composer之前使用各自的php版本名称