php-Editor Yuzi hat beim Ausführen von gofmt -r mit exec.Command den Fehler „Runetext nicht beendet“ festgestellt. Dieser Fehler kann durch ein Symbol im Befehl verursacht werden, das nicht korrekt beendet wird. Um dieses Problem zu lösen, können wir überprüfen, ob die Symbole im Befehl richtig gepaart sind, und sicherstellen, dass jedes Symbol das richtige Abschlusszeichen hat. Versuchen Sie alternativ, Escape-Zeichen zu verwenden, um Befehle zu verarbeiten, die spezielle Symbole enthalten. Ich hoffe, dass diese Methoden Entwicklern helfen können, die auf das gleiche Problem stoßen!
befindet sich in der folgenden Verzeichnisstruktur:
. ├── foo.go ├── go.mod └── main.go
Ich habe ein foo.go
, das eine einfache Typdefinition hat:
package main type foo struct { baz string }
Wenn ich ngofmt -r
über die Befehlszeile ausführe, um den Variablennamen zu ersetzen, funktioniert es:
> gofmt -r 'foo -> bar' foo.go package main type bar struct { baz string }
Aber wenn ich versuche, dieses Programm zu verwenden, um dies von main.go
package main import ( "fmt" "log" "os/exec" ) func main() { combinedoutput, err := exec.command("gofmt", "-r", "'foo -> bar'", "foo.go").combinedoutput() if err != nil { log.fatalf("gofmt foo.go: %v. combined output: %s", err, combinedoutput) } fmt.println(string(combinedoutput)) }
Ich erhalte die Fehlermeldung:
> go run main.go 2023/01/14 23:42:07 gofmt foo.go: exit status 2. Combined output: parsing pattern 'Foo at 1:1: rune literal not terminated exit status 1
Wissen Sie, was es verursacht hat?
Sie müssen nicht zitieren exec.command
的参数;引用是 shell 的一项功能,在进行系统调用时不适用。也没有必要,因为在 shell 中引用是为了描述参数,但在 exec.command
, wenn die Argumente in Argumente für den Funktionsaufruf aufgeteilt werden.
Spezifisch:
exec.command("gofmt", "-r", "'foo -> bar'", "foo.go")
sollte sein
exec.Command("gofmt", "-r", "Foo -> Bar", "foo.go")
Das obige ist der detaillierte Inhalt vonFehler „Lauftext nicht beendet' beim Versuch, gofmt -r mit exec.Command auszuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!