Führen Sie Befehle aus einer Pipe in Echtzeit aus

Führen Sie Befehle aus einer Pipe in Echtzeit aus

Wenn ich eine solche Pipe habe, cat /dev/somedevice | grep 'test'die Befehle ausgibt, wie zum Beispiel echo 'test 17', erscheinen die Befehle in Echtzeit ( /dev/somedeviceliefert jedes Mal eine Zeile). Wenn ich die Befehle jedoch an weiterleite sh, werden sie aufgrund der Pipe-Pufferung nicht sofort aufgerufen. Also

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

führt keine Befehle in Echtzeit aus.

Gibt es eine andere Möglichkeit, das zu tun? Mit xargsoder so?

Antwort1

Versuchen Sie --line-buffered, einen kontinuierlichen Stream zu erstellen:

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

verwandte Informationen