我试图找出一种从 Golang 执行脚本 (.sh) 文件的方法。我找到了几种简单的方法来执行命令(例如 os/exec),但我想要做的是执行整个 sh 文件(文件设置变量等)。为此使用标准的 os/exec 方法似乎并不简单:尝试输入“./script.sh”和将脚本内容加载到字符串中都不能作为 exec 函数的参数。例如,这是我想从 Go 执行的 sh 文件:OIFS=$IFS;IFS=",";# fill in your details heredbname=testDBhost=localhost:27017collection=testCollectionexportTo=../csv/# get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keyskeys=`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 csvmongoexport --host $host -d $dbname -c $collection --fields "$keys" --csv --out $exportTo$dbname.$collection.csv;IFS=$OIFS;来自 Go 程序:out, err := exec.Command(mongoToCsvSH).Output() if err != nil { log.Fatal(err) } fmt.Printf("output is %s\n", out)其中 mongoToCsvSH 可以是 sh 的路径或实际内容 - 两者都不起作用。任何想法如何实现这一目标?
- 3 回答
- 0 关注
- 322 浏览
添加回答
举报
0/150
提交
取消