
Ich habe ein PHP-Skript, das einige Ausgaben an Angular liefert. Dieses Skript ist nützlich, um die Informationen aus dem Perl-Skript abzurufen. Ich verwende exec()
Befehle, um die Skripte in PHP aufzurufen. Ich bekomme, was ich will, aber das Problem ist zeitaufwändig. Ich führe dasselbe Skript dreimal aus, um das Array in PHP zu erstellen. Beispiel:
exec("/usr/bin/reports -h -r -t ".$this->name." | grep -o '^\S*' | sed '1 d'",$report_id);
exec("/usr/bin/reports -h -r -t ".$this->name." | grep -oP '(?<= ).*' | sed '1 d'",$titles);
exec("/usr/bin/reports -h -r -n ".$this->name." | grep -oP '(?<= ).*' | sed '1 d'",$fullnames);
Wie Sie sehen, führe ich dasselbe Skript nur aufgrund geänderter Parameter mehrmals aus.
Mit dem ersten Befehl speichere ich report_id
, mit dem zweiten Befehl speichere ich ihre Position und mit dem dritten ihre vollständigen Namen. Ich brauche eine Lösung, um diese drei Befehle zu einem zusammenzufassen. Bitte helfen Sie, den Zeitaufwand zu vermeiden.
Antwort1
- Ich schlage vor, AWK zu verwenden, da es mehrere reguläre Ausdrücke analysieren und die Felder automatisch trennen kann. Es handelt sich um eine einfache und kleine Sprache, die in allen Unix-Versionen verfügbar ist und speziell für solche Aufgaben entwickelt wurde.
- Besser ist es, die Ausgabe abzurufen und die Verarbeitung mit PHP durchzuführen.exec()Gibt die Ausgabe in einem Zeilenarray zurück.preg_split()kann den Grep/Sed/Cut-Job ausführen.
- Mit dem Befehl „tee“ können Sie die Ausgabe von Berichten in mehreren Pipes verwenden.
- Schließlich können Sie einen benutzerdefinierten Schließmechanismus verwenden, aber ich empfehle das nicht.