Почему не работает проверка и код зацикливается
r ()
{
if [ -f "$1/lock" ]; then
echo $1/lock
fi;
echo $1
for d in $(ls $1 -a)
do
if [ $d!='.' ]; then
if [ $d!='..' ]; then
if [ -d "$d" ]; then
echo "<<$d>>"
( r "$d" )
fi;
fi;
fi;
done
}
r .