Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Skrip Bash dengan lancar daripada Go?

Bagaimanakah Saya Boleh Melaksanakan Skrip Bash dengan lancar daripada Go?

Susan Sarandon
Susan Sarandonasal
2024-12-16 14:32:12993semak imbas

How Can I Seamlessly Execute Bash Scripts from Go?

Melaksanakan Skrip Bash dengan lancar daripada Go

Melaksanakan skrip bash daripada Golang boleh menimbulkan cabaran menggunakan kaedah os/exec standard. Untuk melaksanakan keseluruhan fail sh dengan berkesan, ikuti langkah berikut:

Untuk Pelaksanaan Terus:

  1. Awalan skrip dengan #!/bin/sh (atau # !/bin/bash).
  2. Jadikan skrip boleh laku menggunakan chmod x .

Menggunakan /bin/sh dengan Laluan Skrip:

  • Jika anda memilih untuk tidak menjadikan skrip boleh laku, gunakan / bin/sh dan sediakan laluan skrip sebagai hujah:
cmd := exec.Command("/bin/sh", mongoToCsvSH)

Contoh Skrip (dengan mengandaikan laluan dan kebenaran boleh laku ditetapkan):

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;

Pergi Kod:

var mongoToCsvSH string

func executeMongoToCsv() {
    out, err := exec.Command(mongoToCsvSH).Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("output is %s\n", out)
}

Kesimpulan:

Mengikut langkah ini, anda boleh melaksanakan skrip bash dari Golang dengan berkesan, sama ada secara langsung atau melalui /bin/sh .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Skrip Bash dengan lancar daripada Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn