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) }
結論:
これらの手順に従って、Golang から直接または /bin/sh 経由で bash スクリプトを効果的に実行できます。 .
以上がGo から Bash スクリプトをシームレスに実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。