Lors de l'utilisation du package exec pour exécuter des commandes avec des arguments entre guillemets doubles sous Windows, Windows peut interpréter la citation marque comme des commandes au lieu de délimiteurs. Cela peut entraîner un comportement et des erreurs inattendus.
Par exemple, l'extrait de code suivant tente d'exécuter la commande find avec un argument entre guillemets :
out, err := exec.Command("find", `"SomeText"`).Output()
Cependant, sous Windows, cela entraînera l'exécution de la commande suivante :
find /SomeText"
Les guillemets sont interprétés comme faisant partie de la commande, plutôt que de délimiter l'argument.
Pour résoudre ce problème et exécuter correctement la recherche sous Windows à l'aide du package exec, l'approche suivante peut être utilisée :
<code class="go">package main import ( "fmt" "os" "os/exec" "syscall" ) func main() { cmd := exec.Command(`find`) cmd.SysProcAttr = &syscall.SysProcAttr{} cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt` out, err := cmd.Output() fmt.Printf("%s\n", out) fmt.Printf("%v\n", err) }</code>
Dans ce code, le champ SysProcAttr est utilisé pour définir explicitement la ligne de commande du processus. En définissant le champ CmdLine pour rechercher "SomeText" test.txt, la commande est exécutée avec l'argument entre guillemets intact.
Cette approche permet de transmettre correctement les arguments entre guillemets à la commande, ce qui entraîne le exécution souhaitée sous Windows.
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!