Der Standardweg Befehlsausgabe in Bourne-Shell zu erfassen ist, die $()
Syntax:Wie erfasse ich die Ausgabe eines Befehls in einen Dateideskriptor in der Bourne-Shell?
output=$(mycommand)
Für Befehle, die eine Menge von Ausgabe haben, erfordert jedoch, das der Schale Speicher für das Ganze als eine lange zuteilen Zeichenfolge. Ich würde es vorziehen, etwas zu finden, das das moralische Äquivalent der Unix-C-Funktion nicht popen
, einen neuen Dateideskriptor zu erhalten, ich könnte read
aus:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
Ist das überhaupt möglich?
bash4 eine schöne neue Funktion hat: coproc. es wäre ideal für dich! Schade, es ist immer noch so neu –