É evidente que ele vai dizer que tudo é um diretório!
Você não esta usando o conteúdo da variável
arquivo pois você não a usa com o
$. A princípio seu
if deveria ficar assim para referenciar o conteúdo da variável
arquivo:
if [$digite == $arquivo ];then
Porém não se esqueça que dentro de
$arquivo provavelmente não existe um termo e sim uma lista de termos, assim para que sua rotina funcione como você quer deveria mudá-la, talvez assim (não testei nada, digitei direto da sua rotina aqui no fórum):
#!/bin/bash
arquivo='find * -type f'
read -p "Digite o nome do arquivo ou diretório: " digite
for item in $arquivo; do
if [ "$digite" = "$item" ]; then
echo "Esse é um arquivo: $digite"
BREAK
else
echo "Esse é um Diretório"
fi
done
Porém para que tanto trabalho? Por não testa direto se o nome digitado é um diretório, ou não?
#!/bin/bash
read -p "Digite o nome do arquivo ou diretório: " digite
test -d "$digite" && echo "Esse é um Diretório" || echo "Esse é um arquivo: $digite"
Claro que a rotina esta rudimentar e sem consistências, mas acho que dá para dar uma ideia.