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
Patricia ArquetteOriginal
2024-10-31 10:33:40702Durchsuche

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()

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

find /SomeText"

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>

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!

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