Golang Exec

Golang Exec
Exec -pakken er definert under OS -pakken. Det er ganske enkelt en underpakke som lar deg utføre eksterne kommandoer ved hjelp av go.

I denne guiden vil vi utforske hvordan vi kan bruke EXEC -pakken til å kjøre eksterne kommandoer.

Importere Exec -pakken

For å bruke EXEC -pakken, må vi importere den. Vi kan gjøre dette ved hjelp av en enkel importkommando som:

Importer "OS/EXEC"

Når du er importert, kan du utføre kommandoer, som vi vil se i denne artikkelen.

Golang utfører kommandoer

La oss starte med en grunnleggende kommandoanrop for å illustrere hvordan du bruker EXEC -pakken. Et eksempelkode er som vist nedenfor:

pakkehoved
import (
"FMT"
"Logg"
"OS/EXEC"
)
FUNCMAIN ()
CMD: = exec.Kommando ("Dir")
output, feil: = cmd.CombinedOutput ()
Hvis feil != nil
Logg.Fatal (feil)

fmt.Printf ("output: \ n%s \ n", streng (utgang))

I eksemplet over bruker vi Exec -kommandoen for å få listen over filer og kataloger ved hjelp av DIR -kommandoen.

Vi starter med å definere kommandoen for å kjøre ved hjelp av kommandometoden. Syntaksen er som vist:

func -kommando (navnestreng, arg ... streng) *cmd

Funksjonen tar kommandoene for å kjøre som et strengargument. Den returnerer deretter en kommandostruktur for å utføre kommandoen med de medfølgende argumentene.

Neste trinn er å kjøre kommandoen ved hjelp av CombinedOutput -metoden. Metodens syntaks er som vist:

func (c *cmd) combinedOutput () ([] byte, feil)

Metoden kjører kommandoen og returnerer den kombinerte stdout og stderr. Dette returnerer en byte -skive, som vi konverterer til en streng ved hjelp av strengmetoden.

Når du har kjørt koden over, bør den returnere filene og katalogene i den gjeldende arbeidskatalogen.

Sett gjeldende arbeidskatalog

Vi kan definere den gjeldende arbeidskatalogen som vi skal utføre kommandoen ved hjelp av CMD.DIR -variabel. Et eksempel er som vist:

pakkehoved
import (
"FMT"
"Logg"
"OS/EXEC"
)
FUNCMAIN ()
CMD: = exec.Kommando ("Dir")
CMD.Dir = "..."
output, feil: = cmd.CombinedOutput ()
Hvis feil != nil
Logg.Fatal (feil)

fmt.Printf ("output: \ n%s \ n", streng (utgang))

Fange stdout & stderr separat.

I stedet for å kombinere stdout og stderr, kan du fange dem separat som vist i koden nedenfor:

CMD: = exec.Kommando ("Dir")
CMD.Dir = "..."
var stdout, stderr byte.Buffer
CMD.Stderr = & stderr
CMD.Stdout = & stdout
Feil: = CMD.Løpe()
Hvis feil != nil
Logg.Fatal (feil)

Utgang, feil: = streng (stdout.Byte ()), streng (stderr.Byte ())

Spesifiser OS

Du kan også definere tilpassede kommandoer for et annet operativsystem ved hjelp av runtime.Goos -metode. For eksempel:

Ifruntime.Goos == "windows"
CMD = exec.Kommando ("Dir")

Rørkommandoer

Du kan også røre utgangen fra en tidligere kommando som vist i eksemplet over:

pakkehoved
import (
"FMT"
"Logg"
"OS/EXEC"
)
FUNCMAIN ()
First_cmd: = 'Echo "Hello World" | wc -c '
CMD: = exec.Kommando ("bash", "-c", first_cmd)
output, feil: = cmd.CombinedOutput ()
Hvis feil != nil
Logg.Fatal (feil)

fmt.Printf ("output \ n%s \ n", streng (utgang))

Kommandoen ovenfor skal returnere antall tegn fra Echo -kommandoen.

Lukking

Denne korte guiden illustrerer hvordan du kommer i gang med Exec -pakken i Golang.