Выполнять команды из конвейера в реальном времени

Выполнять команды из конвейера в реальном времени

Если у меня есть конвейер, как 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

Связанный контент