Get Terminal-Ausgabe nach einem Befehl swift

8

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?

    
Nikitin Roman 08.04.2015, 12:33
quelle

2 Antworten

20

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):

%Vor%

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%     
Martin R 08.04.2015, 15:59
quelle
2

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:

%Vor%

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 )

    
Airspeed Velocity 08.04.2015 13:06
quelle

Tags und Links