從 Go 無縫執行 Bash 腳本
從 Golang 執行 bash 腳本可能會給使用標準 os/exec 方法帶來挑戰。要有效執行整個sh 文件,請按照以下步驟操作:
直接執行:
將/bin/sh 與腳本路徑一起使用:
cmd := exec.Command("/bin/sh", mongoToCsvSH)
範例腳本(假設設定了路徑和可執行權限):
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;
Go代碼:
var mongoToCsvSH string func executeMongoToCsv() { out, err := exec.Command(mongoToCsvSH).Output() if err != nil { log.Fatal(err) } fmt.Printf("output is %s\n", out) }
結論:
按照這些步驟,您可以直接或透過/bin/sh 有效地從 Golang 執行 bash 腳本.
以上是如何從 Go 無縫執行 Bash 腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!