Maison > développement back-end > Golang > Comment exécuter efficacement des commandes système avec des arguments variables dans Go ?

Comment exécuter efficacement des commandes système avec des arguments variables dans Go ?

Barbara Streisand
Libérer: 2024-12-22 05:05:09
original
630 Les gens l'ont consulté

How to Efficiently Execute System Commands with Variable Arguments in Go?

Résoudre l'exécution de commandes système avec des arguments variables

Dans de nombreux scénarios, il est courant de rencontrer des commandes système qui nécessitent un nombre variable d'arguments. Cependant, l'exécution de telles commandes dans un script simple peut poser un défi lorsque l'on tente d'exécuter des commandes au-delà des commandes de base à un seul mot.

Dans un exemple de script Go présenté précédemment, les tentatives d'exécution de commandes telles que echo newline >> foo.o a généré des erreurs, indiquant que le script n'a pas réussi à reconnaître les commandes. Cela est probablement dû à un manque de séparation entre la commande et ses arguments dans le processus d'exécution.

Subversion du problème à l'aide de "sh"

Une solution trouvée pour contourner cette limitation implique l'utilisation de la commande sh (shell) :

out, err := exec.Command("sh", "-c", cmd).Output()
Copier après la connexion

Une méthode simplifiée et efficace Approche

Une meilleure alternative qui exploite la prise en charge des arguments variadiques de Go est la suivante :

func exeCmd(cmd string, wg *sync.WaitGroup) {
  // Split command into head and parts
  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)
}
Copier après la connexion

Cette solution tire parti des arguments variadiques de Go, vous permettant de transmettre un nombre variable de arguments à la commande. La variable head représente la commande elle-même, tandis que parts contient le reste des arguments. En utilisant des arguments variadiques, le besoin de commandes externes telles que sh est éliminé, ce qui se traduit par un processus d'exécution plus efficace et plus simple.

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