スクリプト - 空白のあるフォルダ

スクリプト - 空白のあるフォルダ

スペースを処理できるほど強力なスクリプトを作成しようとしています。

現在 for ループにありますが、問題は名前にスペースがあるフォルダーです。

ASOURCE="Home Photos 2012 camcorder" #example filename
if [ -d "$(echo $ASOURCE)" ] # If directory exists
then
#command
else
echo "File does not exist: " $1 #Error
echo "DIR :" $(echo $ASOURCE | sed 's/\ /\\ /g')
fi

確認に失敗しました。あらかじめスペースから脱出しようとしましたが、役に立ちませんでした。

答え1

あなたはする必要がありますいつも(*)特にランダムなユーザー入力が含まれている場合は、変数を参照してください。

この場合、次のスクリプトを使用して作成した場合、二重括弧を使用すると、引用符は必要ありません(bashはこれについてスマートです)。そして、printf "%q"bashを使用してエスケープが必要な項目をエスケープします。

ASOURCE="Home Photos 2012 camcorder" #example filename
if [[ -d $ASOURCE ]]; then
    # directory exists
    :
else
    # Note how these vars are quoted:
    echo "File does not exist:  $1"
    printf "DIR : %q\n" "$ASOURCE"
fi

(*) 知らない限り正確に参照したくないとき。

関連情報