如果我有一个类似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