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
1069 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!

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