Golang'dan bir komut dosyası (.sh) dosyasını yürütmenin bir yolunu bulmaya çalışıyorum. Komutları yürütmek için birkaç kolay yol buldum (örn. Os/exec), ama yapmak istediğim şey tüm sh dosyasını çalıştırmaktır (dosya değişkenleri vb. Ayarlar).Golang'dan bir Bash Komut Dosyası Yürütme
Bunun için standart os/exec yöntemini kullanmak kolay görünmüyor: "./script.sh" dosyasını girmeye çalışmak ve komut dosyasının içeriğini bir dizeye yüklemek exec işlevi için argüman olarak çalışmıyor . Git programından
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;
:
out, err := exec.Command(mongoToCsvSH).Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("output is %s\n", out)
mongoToCsvSH sh yolu veya ikisinden biri olabilir
örneğin, bu şimdiye git dan yürütmek istediğiniz bir sh dosyasıdır gerçek içerik - her ikisi de çalışmıyor.
Bunu nasıl başarırsınız?
Teşekkürler. Bu çalışıyor gibi görünüyor. Ancak şimdi farklı bir sorunum var - komut dosyası çalıştırmak için yaklaşık 1 dakika sürüyor olsa da, program çalışmayı bitirmesini beklemiyor. ve böylece ihracat, fiilen henüz yazılmadan devam ediyor .. herhangi bir fikir? – orcaman
@orcaman nasıl çalışıyorsunuz? exec.Command ("/ bin/sh", mongoToCsvSH) .Output() '? – OneOfOne
evet. Bir şey, sonraki satırlara devam etmeden önce bu dosyayı dosyaya vermek için beklemek zorundayım. – orcaman