Maison > développement back-end > Golang > Comment puis-je exécuter de manière transparente des scripts Bash depuis Go ?

Comment puis-je exécuter de manière transparente des scripts Bash depuis Go ?

Susan Sarandon
Libérer: 2024-12-16 14:32:12
original
991 Les gens l'ont consulté

How Can I Seamlessly Execute Bash Scripts from Go?

Exécuter des scripts Bash de manière transparente depuis Go

L'exécution d'un script bash depuis Golang peut poser des défis en utilisant la méthode os/exec standard. Pour exécuter efficacement un fichier sh entier, suivez ces étapes :

Pour une exécution directe :

  1. Préfixez le script avec #!/bin/sh (ou # !/bin/bash).
  2. Rendre le script exécutable en utilisant chmod x .

Utilisation de /bin/sh avec le chemin du script :

  • Si vous préférez ne pas rendre le script exécutable, invoquez / bin/sh et fournissez le chemin du script en tant que argument :
cmd := exec.Command("/bin/sh", mongoToCsvSH)
Copier après la connexion

Exemple de script (en supposant que le chemin et les autorisations de l'exécutable soient définis) :

OIFS=$IFS;
IFS=",";

# fill in your details here
dbname=testDB
host=localhost:27017
collection=testCollection
exportTo=../csv/

# get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
keys=`mongo "$host/$dbname" --eval "rs.slaveOk();var keys = []; for(var key in db.$collection.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
# now use mongoexport with the set of keys to export the collection to csv
mongoexport --host $host -d $dbname -c $collection --fields "$keys" --csv --out $exportTo$dbname.$collection.csv;

IFS=$OIFS;
Copier après la connexion

Aller Code :

var mongoToCsvSH string

func executeMongoToCsv() {
    out, err := exec.Command(mongoToCsvSH).Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("output is %s\n", out)
}
Copier après la connexion

Conclusion :

En suivant ces étapes, vous pouvez exécuter efficacement un script bash depuis Golang, soit directement, soit via /bin/sh .

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