Si vous spécifiez shell = True
dans subrocess.call
lors de l'exécution d'une commande à partir d'un script Python, la chaîne passée à args sera exécutée par le shell tel quel.
Selon la documentation Python, / bin / sh
pour Unix et la variable d'environnement COMSPEC
pour Windows. Semble être utilisé comme un shell, donc si vous voulez faire la même chose avec Go, serait-ce quelque chose comme ceci:
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