首页 > 后端开发 > Golang > 如何从 Go 无缝执行 Bash 脚本?

如何从 Go 无缝执行 Bash 脚本?

Susan Sarandon
发布: 2024-12-16 14:32:12
原创
989 人浏览过

How Can I Seamlessly Execute Bash Scripts from Go?

从 Go 无缝执行 Bash 脚本

从 Golang 执行 bash 脚本可能会给使用标准 os/exec 方法带来挑战。要有效执行整个 sh 文件,请按照以下步骤操作:

直接执行:

  1. 在脚本前面加上 #!/bin/sh (或 # !/bin/bash)。
  2. 使用 chmod x 使脚本可执行

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板