从 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中文网其他相关文章!