Ich möchte die Daten beim Eintreffen verarbeiten, unabhängig von Zeilenumbrüchen.
- Bei Verwendung
read -n $n
mit einer Pipe auf stdin führt Bash einen Systemaufrufread (0, buf, 1)
pro Byte aus, was zu langsam ist, wenn die zu verarbeitende Datenmenge nicht gering ist (z. B. 1 MB oder mehr). - Bei der Verwendung von
read -N $n
Bash werden wiederholt Systemaufrufe ausgeführt ,read (0, buf, <RestOf$n>)
bis$n
erreicht ist. Daher kann ich nicht mit der Verarbeitung der bisher empfangenen Daten beginnen. - Bei der Verwendung
read -N $n -t 0.1
erhalte ich ein leeres Ergebnis$REPLY
, obwohl einige Daten gelesen wurden. Das bedeutet: Daten sind verloren. Ist das ein Fehler oder eine Funktion von Bash?
Wie kann ich also genau einen read
Systemaufruf mit einem beliebigen count
Argument durchführen bash
und dann die bis dahin erhaltene Eingabe verarbeiten?