Irtigor, quando removo os exit, dá resposta dupla. Foi isso que sugeriu? Por favor, demonstre como encadear, porque não conheço esse comando.
http://1drv.ms/1k8AXt5Fiz assim também (abaixo), mas dessa vez, só executou a primeira parte.
http://1drv.ms/1VViThE#!/bin/bash
echo "Digite /naoexiste, para saber se é diretório ou arquivo."
read captura1
if test -d $captura1 && exit 0; then
echo "$captura1 é um diretório."
elif test -f $captura1 && exit 0; then
echo "$captura1 é um arquivo.";
else echo "$captura1 não foi encontrado."
fi
#-----------------------------------------------------------------
echo "Digite /tmp, para saber se é diretório ou arquivo."
read captura2
if test -d $captura2 && exit 0; then
echo "$captura2 é um diretório."
elif test -f $captura2 && exit 0; then
echo "$captura2 é um arquivo.";
else echo "$captura2 não foi encontrado."
fi
#------------------------------------------------------------------
echo "Digite /etc/passwd, para saber se é diretório ou arquivo."
read captura3
if test -d $captura3 && exit 0; then
echo "$captura3 é um diretório."
elif test -f $captura3 && exit 0; then
echo "$captura3 é um arquivo.";
else echo "$captura3 não foi encontrado."
fi
Fez o que pediu.
test -d $dois && echo "$dois é um diretório." && exit 0
Coloque os testes encadeados e remova as ocorrência do comando exit já não que sair.