3 Stimmen

Umgang mit einfachen Anführungszeichen in Dateipfaden, die von find zurückgegeben werden

Ich schreibe ein Bash-Skript, das, wenn es vom Verzeichnis B spiegelt die Verzeichnisstruktur des Verzeichnisses A im Verzeichnis B .

Derzeit gehe ich folgendermaßen vor:

 #!/bin/bash          

 dirify () {
    echo $1
 }
 export -f dirify

 find "../test" -type d -exec bash -c "dirify '{}'" \;

Ich führe dieses Skript vom Verzeichnis B y ../test ist Verzeichnis A . Glücklicherweise enthält das Verzeichnis, das ich zum Testen verwende, Ordner mit ' im Namen. Wenn ich dieses Skript ausführe, gibt die Bash die folgende Fehlermeldung aus, wenn sie diese Verzeichnisse erreicht:

> bash: -c: line 0: unexpected EOF while looking for matching `''
> bash: -c: line 1: syntax error: unexpected end of file

(Beachten Sie, dass sich Zeile 0 und Zeile 1 auf die Zeilen innerhalb der dirify() Funktion)

Eine vereinfachte Darstellung dieses Problems lautet wie folgt:

find "../test" -exec bash -c "echo '{}'" \;

Dieses Beispiel führt zu denselben Fehlern.

Wie auch immer, das ist ein Problem, denn in der Produktion kann ich nicht davon ausgehen, dass Dateipfade nicht die ' Charakter.

Gibt es eine Möglichkeit, dieses Problem zu umgehen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X