Ich habe ein Leerzeichen in einem der Verzeichnisnamen. Ich möchte eine Datei darunter aus einem Bash-Skript auflisten. Hier ist mein Skript:
fpath="${HOME}/"New Folder"/foobar.txt"
echo "fpath=(${fpath})"
#fpath="${HOME}/${fname}"
ls "${fpath}"
Die Ausgabe für dieses Skript ist:
fpath=(/Users/<username>/"New Folder"/foobar.txt)
ls: /Users/<username>/"New Folder"/foobar.txt: No such file or directory
Aber wenn die Datei auf meiner Shell aufgelistet wird, existiert sie:
$ ls /Users/<username>/"New Folder"/foobar.txt
/Users/<username>/New Folder/foobar.txt
Gibt es eine Möglichkeit, ls
zu bekommen den Pfad aus meinem Skript anzeigen?
Akzeptierte Antwort:
Entfernen Sie einfach die inneren Anführungszeichen:
fpath="${HOME}/New Folder/foobar.txt"
Da der komplette Variableninhalt in doppelten Anführungszeichen steht, müssen Sie dies kein zweites Mal tun. Der Grund, warum es von der CLI aus funktioniert, ist, dass Bash zuerst die Anführungszeichen auswertet. Es schlägt in der Variablen fehl, weil die durch den Backslash maskierten Anführungszeichen als wörtlicher Teil des Verzeichnispfads behandelt werden.