Heim >Backend-Entwicklung >Golang >Wie führe ich „mv'-Befehle mit Platzhaltern in Go aus?

Wie führe ich „mv'-Befehle mit Platzhaltern in Go aus?

DDD
DDDOriginal
2024-12-14 20:48:13175Durchsuche

How to Run `mv` Commands with Wildcards in Go?

MV-Befehle mit Platzhaltern in Go ausführen

In Go ermöglicht das exec-Paket die Ausführung externer Befehle. Wenn Sie jedoch versuchen, mit exec.Command einen mv-Befehl mit einem Platzhalter auszuführen, kann ein Fehler mit der Meldung „Keine solche Datei oder kein solches Verzeichnis“ auftreten.

Der Grund für diesen Fehler liegt darin, dass ein Benutzer einen Befehl eingibt, der Folgendes enthält: B. „mv ./source-dir/*“, erweitert die Shell den Platzhalter auf eine Liste übereinstimmender Dateien. In Go übergibt die exec.Command-Funktion jedoch einfach die Zeichenfolge, die den Platzhalter enthält, als Argument an den Befehl, anstatt ihn zu erweitern.

Um dieses Problem zu beheben, kann man den Platzhalter entweder manuell mithilfe von erweitern filepath.Glob-Funktion, die einen Ausschnitt übereinstimmender Dateipfade zurückgibt. Alternativ kann man die Shell aufrufen, um die Erweiterung durchzuführen. Dies kann erreicht werden, indem die Funktion exec.Command mit „/bin/sh“ als erstem Argument verwendet wird, gefolgt von „-c“ und der Befehlszeichenfolge mit dem Platzhalter, wie zum Beispiel:

cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")

By Durch die Nutzung dieser Methode übernimmt die Shell die Erweiterung des Platzhalters, sodass der Befehl mv erfolgreich ausgeführt werden kann.

Das obige ist der detaillierte Inhalt vonWie führe ich „mv'-Befehle mit Platzhaltern in Go aus?. 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