Comparações de strings com shell são complicadas. Todos querem usar "if" e "test", mas há outra estrutura que funciona muito bem para correspondência de strings.
A estrutura if realmente apenas verifica o status de saída da última coisa que é executada após o if. O "[" é realmente o programa "test", que pode fazer comparações de strings, mas também pode fazer outras coisas, como verificar se uma entrada de diretório é um link ou um diretório ou um arquivo.
Além disso, a estrutura variável = $ (ls) potencialmente fará coisas ruins se você tiver mais de uma entrada de diretório nesse diretório ou se tiver um nome com espaço em branco nela. Você está mais seguro em deixar o shell fazer o globbing para você com algo como um loop for.
Coloque tudo junto com:
#!/bin/sh
default_name=ll_bkup
if
cd /home/storegrid/scripts/test/backup
then
for result in *
do
case "$result"
in
"$default_name")
if
test -d "$result"
then
echo "the default directory exists"
else
echo "the default directory exists but is not a directory!!"
exit 33
fi
;;
*)
if
test -d "$result"
then
echo "non-standard directory $result exists"
else
echo "file named $result exists in directory $(pwd)"
fi
;;
esac
done
else
echo "directory doesn't exist or permission problem!"
exit 40
fi