現在のディレクトリパスにスペースがある場合は、pwdを使用してファイルを繰り返すことはできません。

現在のディレクトリパスにスペースがある場合は、pwdを使用してファイルを繰り返すことはできません。

私が作成したbashスクリプトには次のコードがあります。パスにスペースがないディレクトリで実行すると期待どおりに機能しますが、スペースがあるディレクトリで実行すると失敗します。どういうわけか脱出する必要があると確信していますが、試したことは何も機能しないようです。

for file in `pwd`/*
do 
    echo file:$file
done

「失敗」という意味は、「~/dir 1/test」パスでコマンドを実行すると、次がエコーされるということです。

file: ~/dir
file: 1/
file: test

ディレクトリ内のファイルを一覧表示したい(現在のディレクトリにスペースがない場合は一覧表示されます)。

file: file 1
file: file 2
file: file 3

現在のディレクトリにスペースがある場合にのみ問題が発生し、スペースがあるファイルはうまく処理されます。

私はここでいくつかの同様の例を読んだ。スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そして名前にスペースを含むファイルを繰り返しますか?しかし、(関連がある場合)私の具体的な例にどのように適用されるのかわかりません。

答え1

Paulo Toméのおかげで、次のように変更する必要がありました。

for file in "$(pwd)"/* 
do 
    echo file:"$file" 
done

関連情報