V jednom z názvů adresářů mám mezeru. Chci pod ním vypsat soubor z bash skriptu. Zde je můj skript:
fpath="${HOME}/"New Folder"/foobar.txt"
echo "fpath=(${fpath})"
#fpath="${HOME}/${fname}"
ls "${fpath}"
Výstup tohoto skriptu je:
fpath=(/Users/<username>/"New Folder"/foobar.txt)
ls: /Users/<username>/"New Folder"/foobar.txt: No such file or directory
Ale když je seznam souborů v mém shellu, existuje:
$ ls /Users/<username>/"New Folder"/foobar.txt
/Users/<username>/New Folder/foobar.txt
Existuje způsob, jak mohu získat ls
zobrazit cestu z mého skriptu?
Přijatá odpověď:
Stačí odstranit vnitřní dvojité uvozovky:
fpath="${HOME}/New Folder/foobar.txt"
Protože je celý obsah proměnných obsažen ve dvojitých uvozovkách, nemusíte to dělat podruhé. Důvod, proč to funguje z CLI, je ten, že Bash nejprve vyhodnotí uvozovky. V proměnné se nezdaří, protože uvozovky bez zpětného lomítka jsou považovány za doslovnou část cesty k adresáři.