Wie erfasse ich die Ausgabe eines Befehls an einen Dateideskriptor in Bourne Shell?

StackOverflow https://stackoverflow.com/questions/624520

  •  05-07-2019
  •  | 
  •  

Frage

Die Standardmethode zur Erfassung des Befehlsausgangs in Bourne Shell besteht darin, die zu verwenden $() Syntax:

output=$(mycommand)

Für Befehle, die viel Ausgabe haben, erfordert dies jedoch die Shell -Zuordnungsspeicher für das Ganze als eine lange Zeichenfolge. Ich würde es vorziehen, etwas zu finden, das das moralische Äquivalent der Unix C -Funktion macht popen, um einen neuen Dateideskriptor zu bekommen, konnte ich read aus:

newfd=popen(mycommand)
while read -u $newfd LINE; do
  #process output
done

Ist das überhaupt möglich?

War es hilfreich?

Lösung

#!bash
ls | while read X
do 
    echo  $X is a directory entry
done

Ersetzen Sie 'LS' durch den Befehl Ihrer Wahl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top