Wie kann ich ein Leerzeichen im Dateinamen mithilfe der if-Bedingung ignorieren

Wie kann ich ein Leerzeichen im Dateinamen mithilfe der if-Bedingung ignorieren

Ich habe es versucht:

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

und wenn ein Dateiname mit Leerzeichen gelesen wird, wird der Fehler ausgegeben:

 line 11: [: too many arguments 

Antwort1

Zitieren Sie die Erweiterung von $item, genau wie Sie es bereits mit tun echo:

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

Verwandt:

Beachten Sie auch, dass das Hinzufügen von a /am Ende des Musters die Übereinstimmung von Unterverzeichnissen erzwingt (wennirgendetwasStreichhölzer).

verwandte Informationen