Maison > développement back-end > Golang > Pourquoi `exec.Command()` renvoie-t-il l'état de sortie 1 lors de l'exécution de commandes `sudo` dans Go ?

Pourquoi `exec.Command()` renvoie-t-il l'état de sortie 1 lors de l'exécution de commandes `sudo` dans Go ?

Patricia Arquette
Libérer: 2024-11-27 13:45:10
original
661 Les gens l'ont consulté

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

Commande Os Exec Sudo dans Go

Contexte

Lors de l'exploration de Go et des goroutines, les utilisateurs peut rencontrer des difficultés à exécuter des commandes avec le format :

sudo find /folder -type f | while read i; do sudo -S chmod 644 "$i"; done
Copier après la connexion

Question

  • Pourquoi la commande renvoie-t-elle "état de sortie 1" ?
  • Comment obtenir un aperçu plus détaillé erreur message ?

Réponse

  • Cause de l'état de sortie 1 : La fonction exec.Command() exécute le programme spécifié directement. Cependant, la commande donnée implique plusieurs programmes connectés via un script shell. Pour exécuter des scripts shell, utilisez la syntaxe suivante :
cmd := exec.Command("/bin/sh", "-c", "sudo find ...")
Copier après la connexion
  • Messages d'erreur détaillés : Obtenez des messages d'erreur plus détaillés en exécutant la commande directement dans le terminal. En cas d'échec, recherchez les messages d'erreur dans la sortie du terminal.

Modifications du code

Voici le code modifié :

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)
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal