Ich habe ein Verzeichnis mit mehreren Dateien, von denen einige Leerzeichen in ihren Namen haben:
Test workspace/
Another directory/
file1.ext
file2.ext
demo 2012-03-23.odp
Ich benutze den $(wildcard)
Befehl von GNU für dieses Verzeichnis und iteriere dann über das Ergebnis, indem $(foreach)
ich alles ausdrucke. Hier ist der Code:
FOO := $(wildcard *)
$(info FOO = $(FOO))
$(foreach PLACE,$(FOO),$(info PLACE = $(PLACE)))
Folgendes würde ich erwarten, wenn es ausgedruckt wird:
Test workspace
Another directory
file1.ext
file2.ext
demo 2012-03-23.odp
Folgendes würde ich tatsächlich bekommen:
Test
workspace
Another
directory
file1.ext
file2.ext
demo
2012-03-23.odp
Letzteres nützt mir offensichtlich nichts. In der Dokumentation zu $(wildcard)
Flat-Out heißt es, dass eine "durch Leerzeichen getrennte Liste von Namen" zurückgegeben wird, die damit verbundenen großen Probleme jedoch nicht vollständig berücksichtigt werden. Auch die Dokumentation für $(foreach)
.
Kann man das umgehen? Wenn das so ist, wie? Das Umbenennen jeder Datei und jedes Verzeichnisses zum Entfernen der Leerzeichen ist keine Option.
$?
und$@
. Wenn Sie interessiert sind, sehen Sie meine Antwort unten. und Louis, ist falsch, es funktioniert. Fühlen Sie sich frei, es selbst zu testen