Bashスクリプトの変数のためのスペース

Bashスクリプトの変数のためのスペース

私のディレクトリ名の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が引用符を最初に評価するためです。バックスラッシュでエスケープされた引用符は、ディレクトリパスのリテラル部分として処理されるため、変数で失敗します。

おすすめ記事