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
-
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."
-
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.
-
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.
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.
-
Faltou tirar os exit.
-
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.