Você tem muitas instruções for
: Como está, há uma variável de loop d contando todos os itens em um diretório e uma segunda variável de loop f fazendo isso novamente para cada arquivo presente - então se você tiver 4 arquivos então você terá 4 * 4 = 16 iterações (ou se o done
estiver correto).
Você pode usar uma declaração como ls -l | wc -l
para verificar rapidamente se a figura do estádio está OK.
Eu acho que isso é mais o que você quer:
#!/bin/bash
cd '/home/Ubuntulover/Shell'
file=0
dir=0
temp=0
for d in *;
do
if [ -d "$d" ]; then
dir=$((dir+1))
elif [ -f "$d" ]; then
file=$((file+1))
else
temp=$((temp+1))
fi
done
echo "Files $file"
echo "Directories $dir"
echo "Temporaryfiles $temp"