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 :
Utilisation de /bin/sh avec le chemin du script :
cmd := exec.Command("/bin/sh", mongoToCsvSH)
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;
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) }
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!