首頁 > 後端開發 > Golang > 如何從 Go 無縫執行 Bash 腳本?

如何從 Go 無縫執行 Bash 腳本?

Susan Sarandon
發布: 2024-12-16 14:32:12
原創
990 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板