Maison > développement back-end > Golang > Comment puis-je exécuter des commandes système avec un nombre variable d'arguments dans Go ?

Comment puis-je exécuter des commandes système avec un nombre variable d'arguments dans Go ?

Susan Sarandon
Libérer: 2024-12-20 13:04:12
original
982 Les gens l'ont consulté

How Can I Execute System Commands with a Variable Number of Arguments in Go?

Exécuter des commandes système avec des arguments variables

Dans certains scénarios, l'exécution de commandes système avec un nombre inconnu d'arguments peut poser un défi. Alors que les commandes à un seul mot telles que « ls » ou « date » fonctionnent de manière transparente, des commandes plus complexes peuvent provoquer des échecs du programme. Cet article explore une solution pour surmonter ce problème.

Le package os/exec de Go fournit la fonction Command(), qui prend une chaîne de commande en entrée. Cependant, si la commande contient plusieurs mots ou arguments, cela entraîne une erreur.

Pour exécuter de telles commandes, une approche alternative consiste à utiliser la commande sh. En appelant exec.Command("sh", "-c", cmd), le shell est utilisé pour exécuter la commande spécifiée, permettant des commandes complexes avec n'importe quel nombre d'arguments.

De plus, une approche encore plus simple est d'exploiter la fonctionnalité d'arguments variadiques de Go. En définissant une fonction qui accepte un nombre variable d'arguments et en les attribuant à une tranche de chaînes, la commande peut être exécutée comme suit :

func exeCmd(cmd string, wg *sync.WaitGroup) {
  fmt.Println("command is ", cmd)
  parts := strings.Fields(cmd)
  head := parts[0]
  parts = parts[1:len(parts)]

  out, err := exec.Command(head, parts...).Output()
  if err != nil {
    fmt.Printf("%s", err)
  }
  fmt.Printf("%s", out)
  wg.Done() // Signal completion to waitgroup
}
Copier après la connexion

En utilisant des arguments variadiques, vous pouvez transmettre un nombre variable d'arguments à la commande, facilitant l'exécution de commandes système complexes sans rencontrer les problèmes susmentionnés.

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