Maison > développement back-end > Golang > Comment exécuter des commandes avec des arguments entre guillemets doubles sous Windows à l'aide du package exec ?

Comment exécuter des commandes avec des arguments entre guillemets doubles sous Windows à l'aide du package exec ?

Patricia Arquette
Libérer: 2024-10-31 10:33:40
original
698 Les gens l'ont consulté

How to Execute Commands with Double-Quoted Arguments on Windows Using the exec Package?

Exécuter une commande avec un argument entre guillemets doubles sous Windows

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()
Copier après la connexion

Cependant, sous Windows, cela entraînera l'exécution de la commande suivante :

find /SomeText"
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal