Ich habe versucht, ein Shell-Skript zu schreiben, das einen Verzeichnispfad d als Argument verwendet und rekursiv eine tief eingerückte Liste aller Dateien und Verzeichnisse in d druckt. Das Argument d ist jedoch optional. Wenn kein Argument angegeben wird, wird eine tief eingerückte Liste aller Dateien und Verzeichnisse im aktuellen Verzeichnis gedruckt. Hier ist mein Code:
# the method for tree
myspace=""
spaceCount=0
tree(){
cd "$1"
for i in *; do
if [ -d "$i" ]; then
echo -n "|"
for (( j=0;j<spaceCount;j++ ))
do
echo -n "$myspace"
done
echo "--$i"
spaceCount=$((spaceCount+1))
myspace=" |"
tree "$i"
else
echo -n "|"
for (( j=0;j<spaceCount;j++ ))
do
echo -n "$myspace"
done
echo "--$i"
fi
done
cd ../
spaceCount=$((spaceCount-1))
}
if [ "$1" != "" ]; then
file="$1"
fi
echo ".$file"
tree "$file"
Wenn ein Ordner leer ist, wird ein Stern wie folgt gedruckt:
Wie kann ich das Problem lösen?
shopt -s nullglob
?