ホームページ > バックエンド開発 > 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)
}
ログイン後にコピー

結論:

これらの手順に従って、Golang から直接または /bin/sh 経由で bash スクリプトを効果的に実行できます。 .

以上がGo から Bash スクリプトをシームレスに実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート