Exécuter des commandes à l'aide de exec.Command dans Golang
Lorsque vous travaillez avec Go et des goroutines, la fonction exec.Command() est couramment utilisée pour exécuter des commandes système. Cependant, des difficultés surviennent lorsque l'on tente d'exécuter des scripts shell complexes impliquant plusieurs programmes liés via la syntaxe shell.
Pour résoudre ce problème, il est crucial de comprendre que exec.Command() appelle directement le noyau pour exécuter le processus spécifié. , en contournant l'interprétation du script du shell. Lors de la transmission d'un script shell sous forme de chaîne, le noyau est incapable d'interpréter la syntaxe shell utilisée pour relier les programmes entre eux.
Par conséquent, pour exécuter correctement les scripts shell, Go propose une approche plus appropriée :
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
Dans ce code mis à jour, "/bin/sh" est l'interpréteur responsable de l'exécution du script shell et "-c" représente la commande d'exécution, où le script shell est fourni comme argument à interpréter par le shell.
En utilisant cette approche, Go peut exécuter efficacement des scripts shell complexes fournis par l'utilisateur, leur permettant d'effectuer des tâches impliquant plusieurs programmes et commandes shell.
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!