Ich führe einige Befehle im Terminal mit diesem Code aus:
%Vor%Und nachdem ich wissen möchte, was das Ergebnis dieses Befehls ist, z. wenn ich renne
%Vor%Ich möchte die tatsächlichen Informationen über Änderungen in meinem Repo lesen. Gibt es eine Möglichkeit, das in swift zu tun?
NSTask
ist die Klasse, um ein anderes Programm als Unterprozess auszuführen. Sie können
Erfassen Sie die Ausgabe des Programms, die Fehlerausgabe, den Exit-Status und vieles mehr.
Erweitere meine Antwort auf xcode 6 swift system () , Hier ist eine einfache Dienstprogrammfunktion, um einen Befehl synchron auszuführen, und gibt den Ausgabe-, Fehlerausgabe- und Beendigungscode zurück (jetzt für Swift 2 aktualisiert):
%Vor%Beispielverwendung:
%Vor%Oder, wenn Sie nur an der Ausgabe interessiert sind, aber nicht an die Fehlermeldungen oder Exit-Code:
%Vor%Ausgabe und Fehlerausgabe werden als ein Array von Strings zurückgegeben, eins Zeichenfolge für jede Zeile.
Das erste Argument von runCommand()
muss der vollständige Pfad zu einem sein
ausführbar, z. B. "/usr/bin/git"
. Sie können das Programm mit einer Shell starten (was auch system()
tut):
Der Vorteil ist, dass die ausführbare Datei "git" automatisch gefunden wird über den Standardsuchpfad. Der Nachteil ist, dass Sie müssen quote / escape Argumente korrekt, wenn sie Leerzeichen oder andere enthalten Zeichen, die in der Shell eine besondere Bedeutung haben.
Aktualisieren Sie für Swift 3:
%Vor% system
erzeugt einen neuen Prozess, sodass Sie seine Ausgabe nicht erfassen können. Das Äquivalent, das Ihnen eine Möglichkeit bietet, wäre popen
, das Sie folgendermaßen verwenden könnten:
Aber tu es nicht so. Verwenden Sie NSTask
als Martin beschreibt .
edit: basierend auf Ihrer Anfrage, mehrere Befehle parallel auszuführen, hier ein paar wahrscheinlich unklugen Code:
%Vor% (ernst, verwenden Sie NSTask
)
Tags und Links swift terminal console-output