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!