Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: Advanced-S17 em 15 de Outubro de 2015, 17:14

Título: Tem algum erro, é questão de configuração do interpretador de comando ou regra?
Enviado por: Advanced-S17 em 15 de Outubro de 2015, 17:14
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."
Título: Re:Tem algum erro, é questão de configuração do interpretador de comando ou regra?
Enviado por: irtigor em 15 de Outubro de 2015, 20:53
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.
Título: Re:Tem algum erro, é questão de configuração do interpretador de comando ou regra?
Enviado por: Advanced-S17 em 15 de Outubro de 2015, 22:20
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.
Título: Re:Tem algum erro, é questão de configuração do interpretador de comando ou regra?
Enviado por: irtigor em 16 de Outubro de 2015, 13:16
Faltou tirar os exit.
Título: Re:Tem algum erro, é questão de configuração do interpretador de comando ou regra?
Enviado por: Advanced-S17 em 16 de Outubro de 2015, 15:40
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.