Exécutez une commande dans Go comme subprocess.call de Python (~, shell = True)

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

Exécutez une commande dans Go comme subprocess.call de Python (~, shell = True)
Comment exécuter une commande à l'aide d'un sous-processus en Python
Exécuter des commandes externes avec python
Comportement en donnant une liste avec shell = True dans le sous-processus
Appuyez sur une commande en Python (Windows)
Exécutez la commande shell / Python dans R
Commande à distance qui se comporte comme une commande locale
[Ubuntu] Comment exécuter un script shell
Exécutez la commande COPY en utilisant Psycopg de python
Utilisez Python 3 Subprocess.run () dans le script CGI
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment réaliser quelque chose comme une liste de void * (ou de type de variante) dans Go?
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook