Wie erfasse ich die Ausgabe eines Befehls an einen Dateideskriptor in Bourne Shell?
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?
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