Führen Sie einen Befehl in Go wie Pythons subprocess.call aus (~, shell = True).

Wenn Sie beim Ausführen eines Befehls in einem Python-Skript in "subrocess.call" "shell = True" angeben, wird die an args übergebene Zeichenfolge wie von der Shell ausgeführt.

Gemäß Python-Dokumentation, / bin / sh für Unix und COMSPEC Umgebungsvariable für Windows. Scheint als Shell verwendet zu werden. Wenn Sie also dasselbe mit Go tun möchten, wäre es ungefähr so:

main.go


package main

import (
	"os"
	"os/exec"
	"runtime"
)

func callSubprocess(cmdString string) (err error) {
	osname := runtime.GOOS
	var cmd *exec.Cmd
	if osname == "windows" {
		shell := os.Getenv("COMSPEC")
		cmd = exec.Command(shell, "/c", cmdString)
	} else {
		shell := "/bin/sh"
		cmd = exec.Command(shell, "-c", cmdString)
	}
	cmd.Stdout = os.Stdout
	err = cmd.Run()

	return
}

func main() {
	err := callSubprocess("dir")

	if err != nil {
		os.Exit(1)
	}
}


Recommended Posts

Führen Sie einen Befehl in Go wie Pythons subprocess.call aus (~, shell = True).
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Führen Sie externe Befehle mit Python aus
Verhalten beim Angeben einer Liste mit shell = True im Unterprozess
Drücken Sie einen Befehl in Python (Windows)
Führen Sie den Shell-Befehl / Python in R aus
Remote-Befehl, der sich wie ein lokaler Befehl verhält
[Ubuntu] So führen Sie ein Shell-Skript aus
Führen Sie den Befehl COPY mit Psycopg of Python aus
Verwenden Sie Python 3 Subprocess.run () im CGI-Skript
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Wie kann man in Go so etwas wie eine Liste von void * (oder Variantentypen) erreichen?
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook