私のディレクトリ名の1つにスペースがあります。 bashスクリプトの下にファイルをリストしたいと思います。これは私のスクリプトです。
fpath="${HOME}/\"New Folder\"/foobar.txt"
echo "fpath=(${fpath})"
#fpath="${HOME}/${fname}"
ls "${fpath}"
このスクリプトの出力は次のとおりです。
fpath=(/Users/<username>/"New Folder"/foobar.txt)
ls: /Users/<username>/"New Folder"/foobar.txt: No such file or directory
ただし、シェルにファイルを一覧表示すると、次のように表示されます。
$ ls /Users/<username>/"New Folder"/foobar.txt
/Users/<username>/New Folder/foobar.txt
ls
スクリプトにパスを表示する方法はありますか?
ベストアンサー1
引用符内の二重引用符を削除します。
fpath="${HOME}/New Folder/foobar.txt"
変数全体の内容は二重引用符で囲まれているため、2番目に実行する必要はありません。 CLIで動作する理由は、Bashが引用符を最初に評価するためです。バックスラッシュでエスケープされた引用符は、ディレクトリパスのリテラル部分として処理されるため、変数で失敗します。