Golang Exec

Golang Exec
Das Exec -Paket ist unter dem Betriebssystempaket definiert. Es ist einfach ein Unterpaket, mit dem Sie externe Befehle mit GO ausführen können.

In diesem Handbuch werden wir untersuchen, wie wir das Exec -Paket verwenden können, um externe Befehle auszuführen.

Importieren des Exec -Pakets

Um das Exec -Paket zu verwenden, müssen wir es importieren. Wir können dies mit einem einfachen Importbefehl als:

Importieren "OS/Exec"

Nach dem Import können Sie Befehle ausführen, wie wir in diesem Artikel sehen werden.

Golang führen Befehle aus

Beginnen wir mit einem grundlegenden Befehlsaufruf, um zu veranschaulichen, wie das Exec -Paket verwendet wird. Ein Beispielcode ist wie unten gezeigt:

Paket Main
importieren (
"fmt"
"Protokoll"
"OS/Exec"
)
funcmain ()
CMD: = exec.Befehl ("Dir")
Ausgabe, ERR: = CMD.KombiniertOutput ()
Wenn er irrt != nil
Protokoll.Tödlich (arr)

fmt.Printf ("Ausgabe: \ n%s \ n", String (Ausgabe))

Im obigen Beispiel verwenden wir den Befehl exec, um die Liste der Dateien und Verzeichnisse mit dem Befehl DIR zu erhalten.

Wir beginnen damit, den Befehl zu definieren, der mit der Befehlsmethode ausgeführt wird. Die Syntax ist wie gezeigt:

Func -Befehl (Name Zeichenfolge, Arg… String) *CMD

Die Funktion nimmt die Befehle zum Ausführen als String -Argument. Anschließend wird eine Befehlsstruktur zurückgegeben, um den Befehl mit den angegebenen Argumenten auszuführen.

Der nächste Schritt besteht darin, den Befehl mit der Kombinationsputmethode auszuführen. Die Methodensyntax ist wie gezeigt:

func (c *cmd) kombinierteOutput () ([] Byte, Fehler)

Die Methode führt den Befehl aus und gibt den kombinierten Stdout und Stderr zurück. Dadurch wird eine Bytescheibe zurückgegeben, die wir mit der String -Methode in eine Zeichenfolge konvertieren.

Sobald Sie den obigen Code ausgeführt haben, sollte er die Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis zurückgeben.

Setzen Sie das aktuelle Arbeitsverzeichnis

Wir können das aktuelle Arbeitsverzeichnis definieren, nach dem der Befehl mit dem CMD ausgeführt werden soll.Dir Variable. Ein Beispiel ist wie gezeigt:

Paket Main
importieren (
"fmt"
"Protokoll"
"OS/Exec"
)
funcmain ()
CMD: = exec.Befehl ("Dir")
CMD.Dir = "..."
Ausgabe, ERR: = CMD.KombiniertOutput ()
Wenn er irrt != nil
Protokoll.Tödlich (arr)

fmt.Printf ("Ausgabe: \ n%s \ n", String (Ausgabe))

Erfassen Sie Stdout & Stderr separat.

Anstatt Stdout und Stderr zu kombinieren, können Sie sie separat erfassen, wie im folgenden Code gezeigt:

CMD: = exec.Befehl ("Dir")
CMD.Dir = "..."
var stdout, stderr bytes.Puffer
CMD.Stderr = & stderr
CMD.Stdout = & stdout
ERR: = CMD.Laufen()
Wenn er irrt != nil
Protokoll.Tödlich (arr)

Ausgabe, ERR: = STRING (STDOut.Bytes ()), String (stderr.Bytes ())

OS angeben

Sie können auch benutzerdefinierte Befehle für ein anderes Betriebssystem mit der Laufzeit definieren.Goos -Methode. Zum Beispiel:

Ifrundime.Goos == "Windows"
cmd = exec.Befehl ("Dir")

Rohrbefehle

Sie können auch die Ausgabe eines vorherigen Befehls wie im obigen Beispiel angezeigt:

Paket Main
importieren (
"fmt"
"Protokoll"
"OS/Exec"
)
funcmain ()
First_cmd: = 'echo "Hallo Welt" | WC -c '
CMD: = exec.Befehl ("Bash", "-c", First_cmd)
Ausgabe, ERR: = CMD.KombiniertOutput ()
Wenn er irrt != nil
Protokoll.Tödlich (arr)

fmt.Printf ("Ausgabe \ n%s \ n", String (Ausgabe))

Der obige Befehl sollte die Anzahl der Zeichen aus dem Echo -Befehl zurückgeben.

Schließen

Diese kurze Anleitung zeigt, wie Sie mit dem Exec -Paket in Golang beginnen.