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