Warum gibt „exec.Command()' den Exit-Status 1 zurück, wenn „sudo'-Befehle in Go ausgeführt werden?

Patricia Arquette
Freigeben: 2024-11-27 13:45:10
Original
609 Leute haben es durchsucht

Why Does `exec.Command()` Return Exit Status 1 When Running `sudo` Commands in Go?

Os Exec Sudo Command in Go

Hintergrund

Beim Erkunden von Go und Goroutinen, Benutzer Es kann zu Schwierigkeiten bei der Ausführung von Befehlen kommen Format:

sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done
Nach dem Login kopieren

Frage

  • Warum gibt der Befehl „Exit-Status 1“ zurück?
  • Wie erhalte ich eine detailliertere Beschreibung? Fehler Nachricht?

Antwort

  • Ursache für Exit-Status 1: Die Funktion exec.Command() führt das angegebene Programm aus direkt. Der angegebene Befehl umfasst jedoch mehrere Programme, die über ein Shell-Skript verbunden sind. Um Shell-Skripte auszuführen, verwenden Sie die folgende Syntax:
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
Nach dem Login kopieren
  • Detaillierte Fehlermeldungen: Erhalten Sie detailliertere Fehlermeldungen, indem Sie den Befehl direkt im Terminal ausführen. Wenn dies fehlschlägt, prüfen Sie, ob in der Terminalausgabe Fehlermeldungen angezeigt werden.

Codeänderungen

Hier ist der geänderte Code:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("/bin/sh", "-c", "sudo find /folder -type f | while read i; do sudo -S chmod 644 \"\"; done")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Printf("Error: %s\nOutput: %s", err, out)
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum gibt „exec.Command()' den Exit-Status 1 zurück, wenn „sudo'-Befehle in Go ausgeführt werden?. 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