if条件を使用してファイル名のスペースを無視するにはどうすればよいですか?

if条件を使用してファイル名のスペースを無視するにはどうすればよいですか?

私は試した:

for item in *
do 
if [ -d  ${item} ]
then 
echo "$item" 
fi
done

スペースを含むファイル名が読み込まれると、エラーが出力されます。

 line 11: [: too many arguments 

答え1

$itemすでに の場合と同じように、の展開を引用しますecho

for item in *; do
    if [ -d "$item" ]; then
        echo "$item"
    fi
done

関連している:

また、/パターンの最後に を追加すると、サブディレクトリのマッチングが強制されることに注意してください(何でもマッチします。

関連情報