Autor Tópico: Tem algum erro, é questão de configuração do interpretador de comando ou regra?  (Lida 5033 vezes)

Advanced-S17

  • Visitante
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."
« Última modificação: 16 de Outubro de 2015, 15:45 por Advanced-S17 »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Fez o que pediu.

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

Advanced-S17

  • Visitante
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

Fez o que pediu.

Citar
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.
« Última modificação: 15 de Outubro de 2015, 22:38 por Advanced-S17 »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Faltou tirar os exit.

Advanced-S17

  • Visitante
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.
« Última modificação: 17 de Outubro de 2015, 14:23 por Advanced-S17 »