Maison >développement back-end >Golang >Comment puis-je exécuter des commandes Shell Linux intégrées à partir d'un programme Go ?

Comment puis-je exécuter des commandes Shell Linux intégrées à partir d'un programme Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 17:10:14207parcourir

How Can I Execute Built-in Linux Shell Commands from a Go Program?

Exécution des commandes intégrées du shell Linux à partir des programmes Go

Cherchant à valider l'existence d'un programme sous Linux, un développeur rencontre une erreur en tentant de exécutez l'utilitaire "command" via un programme Go. Cette erreur provient du fait que « command » est une commande Linux intégrée, et non un binaire exécutable dans le $PATH du système. La question se pose : Comment les commandes Linux intégrées peuvent-elles être exécutées dans les programmes Go ?

Solution Native Go : exec.LookPath

Comme suggéré dans la ressource fournie, le L'utilitaire "command" est un shell intégré. Pour l’exécution native de Go, la fonction exec.LookPath fournit une solution. Cette fonction recherche le chemin exécutable du système pour la commande spécifiée et renvoie le chemin complet s'il est trouvé.

path, err := exec.LookPath("command")
if err != nil {
    // Handle error
}
fmt.Println(path) // Prints the full path to the command

Approches alternatives

Si la méthode Go native ne convient pas , des approches alternatives existent :

  • En utilisant le système Which Binaire :
cmd := exec.Command("which", "foobar")
out, err := cmd.Output()
if err != nil {
    // Handle error
}
fmt.Println(string(out)) // Prints the full path to the program (if found)
  • Exécution de la commande depuis Shell :
cmd := exec.Command("/bin/bash", "-c", "command -v foobar")
out, err := cmd.Output()
if err != nil {
    // Handle error
}
fmt.Println(string(out)) // Prints the full path to the program (if found)

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!

Déclaration:
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