Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich Befehle mit Argumenten in doppelten Anführungszeichen im Exec-Paket von Go unter Windows aus?

Wie führe ich Befehle mit Argumenten in doppelten Anführungszeichen im Exec-Paket von Go unter Windows aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 20:13:30689Durchsuche

How to Execute Commands with Double Quoted Arguments in Go's Exec Package on Windows?

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:

  • Legen Sie das SysProcAttr-Feld des cmd fest, um die Prozessattribute anzupassen.
  • Verwenden Sie das CmdLine-Feld, um die genaue auszuführende Befehlszeile anzugeben, einschließlich der Argument in Anführungszeichen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn