Exécuter un script Bash de Golang
Je suis en train d'essayer de trouver un moyen pour exécuter un script (.sh) à partir de fichiers Golang. J'ai trouvé un couple de façons simples pour exécuter des commandes (par exemple, os/exec), mais ce que je cherche à faire est d'exécuter l'ensemble d'une sh de fichier (le fichier ensembles de variables, etc.).
En utilisant le standard de l'os/méthode exec pour cela ne semble pas être simple: à la fois en essayant d'entrée "./script.sh" et charger le contenu du script dans une chaîne de caractères ne fonctionnent pas comme des arguments pour la fonction exec.
par exemple, c'est un sh fichier que je veux exécuter de Go:
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;
du programme:
out, err := exec.Command(mongoToCsvSH).Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("output is %s\n", out)
où mongoToCsvSH peut être le chemin d'accès à la sh ou le contenu réel - les deux ne fonctionnent pas.
Des idées comment faire?
source d'informationauteur orcaman | 2014-09-14
Vous devez vous connecter pour publier un commentaire.
Pour votre script shell pour être directement exécutable, vous devez:
Démarrer avec
#!/bin/sh
(ou#!/bin/bash
etc).Vous devez le rendre exécutable, aka
chmod +x script
.Si vous ne voulez pas le faire, alors vous aurez à exécuter
/bin/sh
avec le chemin d'accès au script.Vous avez besoin pour exécuter
/bin/sh
et passer le script lui-même comme un argument.