Teste --line-buffered para criar um fluxo contínuo:
cat /dev/somedevice | grep --line-buffered 'test' | sh
Se eu tiver um pipe como cat /dev/somedevice | grep 'test' que os comandos de saída, como por exemplo echo 'test 17' , os comandos aparecerão em tempo real (sempre que /dev/somedevice fornecer alguma linha). Se eu no entanto canalizar os comandos para sh , eles não serão invocados imediatamente por causa do buffer de tubulação. Então
cat /dev/somedevice | grep 'test' | sh
não executará comandos em tempo real.
Existe alguma outra maneira que seria? Com xargs ou algo assim?
Teste --line-buffered para criar um fluxo contínuo:
cat /dev/somedevice | grep --line-buffered 'test' | sh