Heim >Backend-Entwicklung >Golang >Wie kann ich Bash-Skripte nahtlos von Go aus ausführen?

Wie kann ich Bash-Skripte nahtlos von Go aus ausführen?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 14:32:12993Durchsuche

How Can I Seamlessly Execute Bash Scripts from Go?

Nahtloses Ausführen von Bash-Skripten von Go aus

Das Ausführen eines Bash-Skripts von Golang aus kann mit der Standardmethode os/exec zu Herausforderungen führen. Um eine gesamte SH-Datei effektiv auszuführen, befolgen Sie diese Schritte:

Für die direkte Ausführung:

  1. Stellen Sie dem Skript #!/bin/sh (oder #) voran. !/bin/bash).
  2. Machen Sie das Skript mit chmod x ausführbar .

Verwenden von /bin/sh mit Skriptpfad:

  • Wenn Sie das Skript lieber nicht ausführbar machen möchten, rufen Sie / auf bin/sh und geben Sie den Skriptpfad als an Argument:
cmd := exec.Command("/bin/sh", mongoToCsvSH)

Beispielskript (Pfad und ausführbare Berechtigungen vorausgesetzt):

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;

Los Code:

var mongoToCsvSH string

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

Fazit:

Mit diesen Schritten können Sie ein Bash-Skript von Golang aus effektiv ausführen, entweder direkt oder über /bin/sh .

Das obige ist der detaillierte Inhalt vonWie kann ich Bash-Skripte nahtlos von Go aus ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn