Exécuter plusieurs commandes d'exécution dans le même shell à l'aide de Go
Dans le package os/exec de Go, l'exécution simultanée de plusieurs commandes présente un défi . Cet article traite d'un cas spécifique où l'exécution de commandes séquentiellement et dans le même shell est souhaitée.
Description du problème
Le code fourni tente d'exécuter trois commandes successivement :
cd path; ./configure; make
Cependant, la deuxième commande, ./configure, échoue avec une erreur « aucun fichier ou répertoire de ce type » car le répertoire de travail n'est pas défini.
Solution utilisant un shell
Pour exécuter des commandes dans une seule instance de shell, l'approche suivante peut être utilisée :
cmd := exec.Command("/bin/sh", "-c", "cd path; ./configure; make") err := cmd.Run()
Cette commande appelle le shell (/bin/sh) avec l'option -c, qui exécute les commandes fournies séquentiellement dans le shell. Cela permet à cd de modifier le répertoire de travail pour les commandes suivantes.
Solution utilisant le répertoire de travail
Alternativement, si seul un répertoire spécifique doit être défini pour les commandes, le Le répertoire de travail peut être défini manuellement :
config := exec.Command("./configure", "--disable-yasm") config.Dir = folderPath build := exec.Command("make") build.Dir = folderPath
En définissant le champ Dir de la commande, le répertoire de travail est modifié avant l'exécution de la commande, garantissant ainsi que les commandes s'exécutent dans le bon répertoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!