Golang Exec

Golang Exec
Pakiet exec jest zdefiniowany w pakiecie systemu operacyjnego. Jest to po prostu pod-pak, który pozwala wykonywać zewnętrzne polecenia za pomocą Go.

W tym przewodniku zbadamy, w jaki sposób możemy użyć pakietu EXED do uruchamiania poleceń zewnętrznych.

Importowanie pakietu Exec

Aby korzystać z pakietu EXED, musimy go zaimportować. Możemy to zrobić za pomocą prostego polecenia importu jako:

importować „OS/Exec”

Po zaimportowaniu możesz wykonywać polecenia, jak zobaczymy w tym artykule.

Golang wykonuje polecenia

Zacznijmy od podstawowego wywołania poleceń, aby zilustrować, jak korzystać z pakietu exec. Przykładowy kod jest pokazany poniżej:

Pakiet Main
import (
„FMT”
"dziennik"
„OS/Exec”
)
funcMain ()
cmd: = exec.Polecenie („Dir”)
wyjście, err: = cmd.Combinedoutput ()
Jeśli err != zero
dziennik.Fatalny (err)

fmt.Printf („wyjście: \ n%s \ n”, ciąg (wyjściowe))

W powyższym przykładzie używamy polecenia exec, aby uzyskać listę plików i katalogów za pomocą polecenia DIR.

Zaczynamy od zdefiniowania polecenia do uruchomienia za pomocą metody polecenia. Składnia jest jak pokazana:

Polecenie FUNC (ciąg, arg… ciąg) *cmd

Funkcja przyjmuje polecenia, aby działać jako argument ciągu. Następnie zwraca strukturę polecenia, aby wykonać polecenie z podanymi argumentami.

Następnym krokiem jest uruchomienie polecenia za pomocą metody Combinedoutput. Składnia metody jest taka, jak pokazano:

FUNC (C *CMD) Combinedoutput () ([] bajt, błąd)

Metoda uruchamia polecenie i zwraca połączony stdout i stderr. Zwraca to plasterek bajtów, który konwertujemy na ciąg za pomocą metody ciągu.

Po uruchomieniu powyższego kodu powinien zwrócić pliki i katalogi w bieżącym katalogu roboczym.

Ustaw aktualny katalog roboczy

Możemy zdefiniować bieżący katalog roboczy, na którym można wykonać polecenie za pomocą CMD.Zmienna DIR. Przykładem jest jak pokazano:

Pakiet Main
import (
„FMT”
"dziennik"
„OS/Exec”
)
funcMain ()
cmd: = exec.Polecenie („Dir”)
CMD.Dir = "…"
wyjście, err: = cmd.Combinedoutput ()
Jeśli err != zero
dziennik.Fatalny (err)

fmt.Printf („wyjście: \ n%s \ n”, ciąg (wyjściowe))

Odniszcz STDOUT & STDERR.

Zamiast łączyć stdout i stderr, możesz je przechwycić osobno, jak pokazano w poniższym kodzie:

cmd: = exec.Polecenie („Dir”)
CMD.Dir = "…"
var stdout, bajty stderr.Bufor
CMD.Stderr = i stderr
CMD.Stdout = & stdout
err: = cmd.Uruchomić()
Jeśli err != zero
dziennik.Fatalny (err)

wyjście, err: = string (stdout.Bajtes ()), ciąg (stderr.Bajtes ())

Określ system OS

Możesz także zdefiniować niestandardowe polecenia dla innego systemu operacyjnego za pomocą czasu wykonywania.Metoda GOOS. Na przykład:

Ifruntime.Goos == „Windows”
cmd = exec.Polecenie („Dir”)

Polecenia rurowe

Możesz także wypalić wyjście poprzedniego polecenia, jak pokazano w powyższym przykładzie:

Pakiet Main
import (
„FMT”
"dziennik"
„OS/Exec”
)
funcMain ()
First_cmd: = 'echo „Hello World” | wc -c '
cmd: = exec.Polecenie („bash”, „-C”, First_cmd)
wyjście, err: = cmd.Combinedoutput ()
Jeśli err != zero
dziennik.Fatalny (err)

fmt.Printf („wyjściowe \ n%s \ n”, ciąg (wyjściowe))

Powyższe polecenie powinno zwrócić liczbę znaków z polecenia Echo.

Zamknięcie

Ten krótki przewodnik ilustruje, jak zacząć od pakietu Exec w Golang.