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