实时从管道运行命令

实时从管道运行命令

如果我有一个类似cat /dev/somedevice | grep 'test'这样的管道输出命令,例如echo 'test 17',命令会实时出现(每次/dev/somedevice都会传递一些行)。但是,如果我将命令通过管道传输到sh,由于管道缓冲,它们不会立即被调用。所以

cat /dev/somedevice | grep 'test' | sh

不会实时执行命令。

还有其他方法吗?用xargs什么方法?

答案1

尝试--line-buffered制作一个连续的流:

cat /dev/somedevice | grep --line-buffered 'test' | sh

相关内容