Heim >Backend-Entwicklung >Golang >Warum schlägt mein Go „exec.Command' mit mehreren Argumenten fehl, wenn derselbe Befehl in der Konsole funktioniert?
Befehle mit mehreren Argumenten ausführen
Beim Ausführen von Befehlen in Go ist es wichtig, darauf zu achten, wie Argumente an den Befehl übergeben werden. Ein kürzlich von einem Benutzer festgestelltes Problem bestand darin, dass die Ausführung des Befehls „top“ mit bestimmten Argumenten über die Konsole funktionierte, bei Verwendung des Exec-Pakets jedoch fehlschlug.
Das Problem
Der Code des Benutzers, der „top -n 10 -l 2“ erfolgreich ausgeführt hat, konnte „top -o cpu -n 10 -l 2“ nicht ausführen. Die vom Exec-Paket bereitgestellte Fehlermeldung zeigte an, dass das Argument „-o cpu“ ungültig war.
Die Lösung
Das Problem liegt in der Art und Weise, wie Argumente übergeben werden der Befehl. Der Befehlszeileninterpreter auf der Konsole trennt die Argumente automatisch, sodass der Befehl sie korrekt analysieren kann. Bei Verwendung des Exec-Pakets müssen die Argumente jedoch explizit getrennt werden.
Für diesen speziellen Fall wäre der richtige Code:
cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
Durch die Trennung der Argumente kann das Exec-Paket dies tun Übergeben Sie sie wie erwartet an den Befehl, um den Fehler zu beheben.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Go „exec.Command' mit mehreren Argumenten fehl, wenn derselbe Befehl in der Konsole funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!