Heim > Backend-Entwicklung > Golang > Wie führe ich Befehle mit Argumenten in doppelten Anführungszeichen unter Windows mithilfe des exec-Pakets aus?

Wie führe ich Befehle mit Argumenten in doppelten Anführungszeichen unter Windows mithilfe des exec-Pakets aus?

Patricia Arquette
Freigeben: 2024-10-31 10:33:40
Original
690 Leute haben es durchsucht

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

Ausführen eines Befehls mit einem Argument in doppelten Anführungszeichen unter Windows

Wenn Sie das exec-Paket verwenden, um Befehle mit Argumenten in doppelten Anführungszeichen unter Windows auszuführen, interpretiert Windows möglicherweise das Anführungszeichen Markierungen als Befehle anstelle von Trennzeichen. Dies kann zu unerwartetem Verhalten und Fehlern führen.

Zum Beispiel versucht das folgende Codefragment, den Suchbefehl mit einem Argument in doppelten Anführungszeichen auszuführen:

out, err := exec.Command("find", `"SomeText"`).Output()
Nach dem Login kopieren

Unter Windows ist dies jedoch der Fall führt dazu, dass der folgende Befehl ausgeführt wird:

find /SomeText"
Nach dem Login kopieren

Die Anführungszeichen werden als Teil des Befehls interpretiert und nicht als Begrenzung des Arguments.

Um dieses Problem zu beheben und die Suche korrekt auszuführen Befehl unter Windows mithilfe des Exec-Pakets ausführen, kann der folgende Ansatz verwendet werden:

<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>
Nach dem Login kopieren

In diesem Code wird das Feld SysProcAttr verwendet, um die Befehlszeile für den Prozess explizit festzulegen. Durch Festlegen des Felds „CmdLine“ auf die Suche nach „SomeText“ test.txt wird der Befehl mit intaktem Argument in doppelten Anführungszeichen ausgeführt.

Dieser Ansatz ermöglicht die korrekte Übergabe von Argumenten in doppelte Anführungszeichen an den Befehl, was dazu führt, dass gewünschte Ausführung unter Windows.

Das obige ist der detaillierte Inhalt vonWie führe ich Befehle mit Argumenten in doppelten Anführungszeichen unter Windows mithilfe des exec-Pakets aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage