ディレクトリ名の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
を取得する方法はありますか? スクリプトからのパスを表示するには?
承認された回答:
内側の引用符で囲まれた二重引用符を削除するだけです:
fpath="${HOME}/New Folder/foobar.txt"
変数の内容全体が二重引用符で囲まれているため、2回目に行う必要はありません。 CLIから機能する理由は、Bashが最初に引用符を評価するためです。バックスラッシュでエスケープされた引用符はディレクトリパスのリテラル部分として扱われるため、変数で失敗します。