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:
- Warum gerät mein Shell-Skript ins Stocken, wenn es sich um Leerzeichen oder andere Sonderzeichen handelt?
- Wann sind doppelte Anführungszeichen erforderlich?
Beachten Sie auch, dass das Hinzufügen von a /
am Ende des Musters die Übereinstimmung von Unterverzeichnissen erzwingt (wennirgendetwasStreichhölzer).