Befehl mit Argumenten in doppelten Anführungszeichen im Exec-Paket für Windows ausführen
Das Ausführen von Befehlen mit dem Paket exec erfordert sorgfältige Aufmerksamkeit beim Umgang mit Argumenten in doppelten Anführungszeichen Argumente, insbesondere in Windows-Umgebungen. Dieser Artikel befasst sich mit einem besonderen Problem im Zusammenhang mit dem Suchbefehl und bietet eine Lösung für dessen korrekte Ausführung.
Das Problem tritt auf, wenn versucht wird, einen Befehl wie den folgenden auszuführen:
out, err := exec.Command("find", `"SomeText"`).Output()
Unter Windows ist dies der Fall Der Befehl schlägt aufgrund der doppelten Anführungszeichen fehl, was dazu führt, dass das Argument wie folgt maskiert wird:
find /SomeText"
Um dieses Problem zu beheben, ist ein komplexerer Ansatz erforderlich, wie der folgende Code zeigt:
<code class="go">package main import ( "fmt" "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>
In diesem Code machen wir:
Dieser Ansatz ermöglicht es uns, den Suchbefehl wie beabsichtigt mit einem Argument in doppelten Anführungszeichen auszuführen. Es ist jedoch anzumerken, dass dieses Verhalten nicht explizit in der Go-Dokumentation dokumentiert ist, was darauf hindeutet, dass es sich möglicherweise nicht um eine allgemein bekannte Funktion handelt.
Das obige ist der detaillierte Inhalt vonWie führe ich Befehle mit Argumenten in doppelten Anführungszeichen im Exec-Paket von Go unter Windows aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!