script com while [RESOLVIDO]

1. script com while [RESOLVIDO]

César Thomé Rodrigues
cesarfrrrk

(usa Debian)

Enviado em 11/08/2011 - 16:01h

Galera gostaria de criar um script com while mas como não domino muito shell estou tendo problemas. O que eu gostaria de fazer é que ao responder a pergunta com 'sim' ele faça uma ação e ao responder com 'não' ele faça outra.

Pois bem, fiz algo como exemplo aqui.

echo "Iniciar? [S/n]"
read acao
while [ "$acao" != s -o "$acao" != n ]
do
echo "Opção inválida. Digite apenas s ou n"
read acao
if [ "$acao" = s ] ; then
echo "Aí sim ein?!" && exit 0
fi

if [ "$acao" = n ] ; then
echo "Aí não ein?!" && exit 0
fi
done

O que acontece é que a primeira resposta que eu dou a pergunta mesmo sendo s ou n cai como errada.
Se pudessem me ajudar ficaria grato
Valeu galera


  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 11/08/2011 - 16:26h

O 's' cai como errado porque você utilzou um ou ali no test. Como 's' eh diferente de 'n'
a condição será verdadeira.

Agora para o while repetir sempre que uma tecla diferente de s ou n é digitada, basta você passar o done
pra antes do if. Fica assim:

echo "Iniciar? [S/n]"
read acao
while [ "$acao" != s -a "$acao" != n ]
do
echo "Opção inválida. Digite apenas s ou n"
read acao
done

if [ "$acao" = s ] ; then
echo "Aí sim ein?!" && exit 0
fi

if [ "$acao" = n ] ; then
echo "Aí não ein?!" && exit 0
fi

Confere se é isso mesmo.
t+


3. Re: script com while [RESOLVIDO]

César Thomé Rodrigues
cesarfrrrk

(usa Debian)

Enviado em 11/08/2011 - 16:03h

E lembrando que eu preciso que o script fique em loop caso a resposta seja outra coisa que nao 's ou n'. Valeeu


4. Re: script com while [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/08/2011 - 16:24h

while true; do
read acao
if [ "$acao" == "s" ]; then
echo "Aí sim ein?!" && exit 0
fi
if [ "$acao" == "n" ]; then
echo "Aí não ein?!" && exit 0
fi
echo "Opção inválida. Digite apenas s ou n"
done


5. Re: script com while [RESOLVIDO]

Francisco Ambrozio
fco

(usa Slackware)

Enviado em 11/08/2011 - 16:26h

Uma sugestão seria:

read -p "Iniciar? [S/n]" acao

while true
do
case "$acao" in:
"s")
echo "Aí sim ein?!"
break
;;
"n")
echo "Aí não ein?!"
break
;;
*)
echo "Opção inválida. Digite apenas s ou n"
esac
done



6. Re: script com while [RESOLVIDO]

César Thomé Rodrigues
cesarfrrrk

(usa Debian)

Enviado em 11/08/2011 - 16:41h

Aí, deu certo, vou adapta-los aqui agora. Valeu Xico_Ambrozio, mrk3004 e valeu daemonio por me explicar o erro do script.

Valeu galera
abração!!


7. Re: script com while [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 11/08/2011 - 16:44h

Olá @cesarfrrrk , veja se vai ajudar.

===================

#!/bin/bash
# Faça enquanto não tecla "S" ou "N"
#
while :
do
clear
echo "Iniciar? [S/n]"
read Sn
test "$Sn" = "n" && exit
test "$Sn" = "S" && exit
echo "Digitou outra tecla e não [S] ou [n] não vai sair nem a PAU"
read -t 10 # Coloquei um timeout para vc ver a mensagem. Pode tirar depois.
done

exit

#EOF
=========================
ps: o correto era fazer o test na mesma linha. Sou aprendiz de borracheiro, mas acho que vc poderá altera-la para fazer o teste na mesma linha para o S e n.

@GA_Tux



8. Re: script com while [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 11/08/2011 - 16:47h

Ahhh vah rrs , vcs foram muito rápidos @Xico_Ambrozio e @mrk3004 :) valeu



9. Re: script com while [RESOLVIDO]

César Thomé Rodrigues
cesarfrrrk

(usa Debian)

Enviado em 11/08/2011 - 16:52h

Aeeee valeu @AprendiNoLinux, o seu funcionou também! Vou adapta-los aqui pra minha necessidade.
Valeuzao!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts