Exécution de commandes système avec des arguments variables
Lors de l'exécution de commandes système impliquant plusieurs arguments, il devient nécessaire de séparer la commande des arguments. Le code ci-dessous illustre ce concept :
import ( "fmt" "os/exec" "strings" "sync" ) func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) // Splitting head (e.g., "g++") from the rest of the command (e.g., "-c file.cpp") parts := strings.Fields(cmd) head := parts[0] parts = parts[1:len(parts)] out, err := exec.Command(head, parts...).Output() if err != nil { fmt.Printf("%s", err) } fmt.Printf("%s", out) wg.Done() // Signal to waitgroup that this goroutine is done } func main() { wg := new(sync.WaitGroup) wg.Add(3) x := []string{ "echo newline >> foo.o", "echo newline >> f1.o", "echo newline >> f2.o"} go exeCmd(x[0], wg) go exeCmd(x[1], wg) go exeCmd(x[2], wg) wg.Wait() }
Dans ce code :
En utilisant cette approche, le programme peut exécuter des commandes système avec un nombre arbitraire d'arguments. Il surmonte la limitation du code original, qui échouait pour les commandes comportant plusieurs mots.
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!