Tem algum erro, é questão de configuração do interpretador de comando ou regra?

Iniciado por Advanced-S17, 15 de Outubro de 2015, 17:14

tópico anterior - próximo tópico

Advanced-S17

Não consegui identificar erro nesse script, abaixo, mas o bash executa até a segunda verificação e a terceira verificação não faz, com o arquivo /etc/passwd. Qual das 3 perguntas ocorre ou é outra questão?

#!/bin/bash
echo "Digite /naoexiste, para saber se é diretório, arquivo ou se não existe."
read um
test -d $um && echo "$um é um diretório." && exit 0

test -f $um && echo "$um é um arquivo." && exit 0

echo "$um não existe."
echo && echo && echo
echo "Digite /tmp, para saber se é diretório, arquivo ou se não existe."
read dois
test -d $dois && echo "$dois é um diretório." && exit 0

test -f $dois && echo "$dois é um arquivo." && exit 0

echo "$dois não existe."
echo && echo && echo
echo "Pra terminar, digite /etc/passwd"
read tres
test -d $tres && echo "$tres é um diretório." && exit 0

test -f $tres && echo "$tres é um arquivo." && exit 0

echo "$tres não existe."

irtigor

Fez o que pediu.

Citartest -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.

Advanced-S17

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/1k8AXt5



Fiz 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

Citação de: irtigor online 15 de Outubro de 2015, 20:53
Fez o que pediu.

Citartest -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.

irtigor


Advanced-S17

Citação de: irtigor online 16 de Outubro de 2015, 13:16
Faltou tirar os exit.

O bash passa para a segunda e a terceira verificação, mas dá 2 respostas, primeira, o que é, e segunda, que não existe.

Ver, http://1drv.ms/1NgiUe3
P.S.: Finalmente, depois de retirar os exit do segundo script, deu certo, muito obrigado.
Ver, http://1drv.ms/1LycCad.