perdão escrevi confudo no lugar de confuso.
a linha
[ "${usuario}" ] || break;
faz o segunte teste - se a variavel *não* possui conteudo, então
executa o break.
na pergunta se vc der um simples 'enter', sem nenhum valor, sai do
laço interno. uma maneira de sair da pesquisa.
On 7/24/06, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote:
> olha, achei o uso que vc faz de while read um pouco confudo, de uma
> olhada nesse caso:
>
> #!/bin/bash
> while :
> do echo '###########################
> Selecione uma opcao do menu
> ###########################
>
> P) Pesquisa
> S) Sair'
> read -p " > " OPCAO
>
> case "${OPCAO}" in
> P|p) usuario=default
> while :
> do read -p "Qual usuario pesquisar? " usuario
> [ "${usuario}" ] || break;
> echo "vc escolheu ${usuario}"
> done
> ;;
>
> S|s) echo "Saindo"
> break
> ;;
>
> *) echo "Opcao invalida"
> #exit 1
> ;;
> esac
> done
>
> Explicação - while : é um laço 'infinito' que vc só sai com a
> instrução break, por exemplo. no caso temos 2, um para o loop geral,
> com as opções do menu, para sair apenas com S (ou s) e outro para a
> pesquisa (o seu while read usuario parece indicar que vc quer
> pesquisar um monte de gente de uma vez só).
>
> Ainda ficou clean e funcional =) Só falta funcionar.
>
> On 7/24/06, Thiago Germano Beier <[EMAIL PROTECTED]> wrote:
> > administrando servidor
> > pessoal o script abaixo e composto por menus mas quando o faco um
> > laco dentro CASE ele fica preso no laco do CASE e nao sai mais a nao
> > ser com CTRL+C
> >
> > ## codigo ##
> >
> > #!/bin/bash
> > clear
> > # mostra opcoes
> > while
> >
> > echo ""
> > echo "###########################"
> > echo "Selecione uma opcao do menu"
> > echo "###########################"
> > echo ""
> >
> > echo "1) Opcao 1"
> > echo "2) Opcao 2"
> > echo "3) Opcao 3"
> > read OPCAO
> > do
> > # testa a valida rsposta das opcoes
> > case $OPCAO in
> > 1)
> > clear
> > echo "vc escolheu1"
> > echo "Qual usuario pesquisar?"
> > while read usuario
> > do
> > echo $usuario
> > done
> > exit
> > ;;
> > 2)
> > clear
> > echo "vc escolheu2"
> > ;;
> > 3)
> > clear
> > echo "vc escolheu3"
> > ;;
> > *)
> > clear
> > echo "nenhuma opção foi escolhida"
> > echo "saindo do script"
> > sleep 3
> > exit
> > ;;
> > esac
> > done
> > exit
> >
> > pergunto:
> >
> > 1- como faco para qdo um laco nao for satisfatorio VOLTAR pro menu
> > inicial ?
> >
> >
> > []s
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação, como
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> > prévio aviso.
> > ---------------------------------------------------------------------
> > Sair da lista: [EMAIL PROTECTED]
> > ---------------------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer
>
--
Tiago B Peczenyj
Linux User #405772
# cd /pub
# more beer
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/
<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html