shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Menu em script


From: Reinaldo Marques de Lima
Subject: RE: [shell-script] Menu em script
Date: Thu, 06 Oct 2005 13:29:50 +0000

Cara, inves de fzr com um monte de if, tenta fazer os blocos separados em funções, e
utilizando o case pro menuzinho....
mais ou menos assim

-----------------------------------------------------------------------------------------------------
menu() {

       echo "    Opções: "
       echo
       echo "    Digite: "
       echo "    1 - Para 'blablabla'"
       echo "    2 - Para 'blablabla'"
       echo "    3 - Para 'blablabla'"
       echo "    4 - Para 'blablabla'"
       echo "    5 - Para Ajuda"
       echo "    6 - Para Sair"
       echo
       echo "Escolha uma opção: "
       echo
       read opcao

       if [ $opcao -lt 1 ] || [ $opcao -gt 6 ]; then

               echo
               echo "    Parametro invalido"
               echo
               exit
       fi

       funcao.opcao

}

funcao.opcao() {

       case $opcao in

       1) blablabla; menu; ;;
       2) blablabla; menu; ;;
       3) blablabla; menu; ;;
       4) blablabla; ;;
       5) ajuda; menu; ;;
       6) sair; ;;

       esac

}

nome_de_cada_opção_do_menu() {

************* o q a opção faz *****************

} # essa parte voce usa pra todas as opções do seu menu

menu # ultima instrução...que vai buscar o menu no topo do script


------------------------------------------------------------------------------------------------------------------

voce tratando direitinho os possiveis erros do usuario vai te poupar bastante dor de cabeça beleza, espero ter ajudado

abraço
---------------------------------------------------------------------------------------------------------------------------------
Caros,

Estou tentando fazer um menu, onde uma determinada empresa vai acessar via <br>
ssh. Criei o menu, porém ele está me apresentando falhas. Neste menu, o <br>
usuário deve escolher uma opção, que no caso vai ser numérica. <br>
Quando o usuário digita uma letra, ou um número que não encontra-se no menu, <br> ele está saindo do script sozinho, e quando é precionado Enter sem uma opção <br> ele retorna outro erro. Só para constar, quando o usuário utiliza o ssh, eu <br>
defini o shell do usuário como o script no passwd. <br>
<br>
O código é este abaixo: <br>
<br>
while : ; <br>
do <br>
<br>
clear <br>
<br>
echo &quot;Empresa&quot; <br>
echo &quot;Bem vindo&quot; <br>
echo &quot; &quot; <br>
echo &quot;Opções para manutenção em nosso sistema:&quot; <br>
echo &quot; &quot; <br>
echo &quot;Para opção 1 digite: 1&quot; <br>
echo &quot;Para opção 2 digite: 2&quot; <br>
echo &quot;Para opção 3 digite: 3&quot; <br>
echo &quot;Para opção 4 digite: 4&quot; <br>
echo &quot;Para sair: 0&quot; <br>
echo &quot; &quot; <br>
<br>
read -p &quot;Entre com a opção: &quot; Lib <br>
if [ &quot;$Lib&quot; != {0-9} ]; then <br>
       echo &quot;Formato invalido!&quot; <br>
       shift <br>
fi <br>
<br>
<br>
if (( $Lib == 0 )); then <br>
       echo &quot;Obrigado por utilizar nosso sistema&quot; <br>
       echo &quot;Até logo&quot; <br>
       sleep 4 <br>
       clear <br>
       break <br>
<br>
elif (( $Lib == 1 )); then <br>
       clear <br>
       echo &quot;Empresa&quot; <br>
       echo &quot; &quot; <br>
       echo &quot;Você está em: Manutenção - Opção 1&quot; <br>
       echo &quot; &quot; <br>
       echo &quot;Sub Opção 1&quot; <br>
       echo &quot;Sub Opção 2&quot; <br>
       echo &quot;Para sair: 0&quot; <br>
       read -p &quot;Opção: &quot; op_sub1 <br>
       if [ &quot;$Lib&quot; != {0-9} ]; then <br>
               echo &quot;Formato invalido!&quot; <br>
               shift <br>
       fi <br>
<br>
               if (( $op_sub1 == 0 )); then <br>
echo &quot;Obrigado por utilizar nosso sistema&quot; <br>
                       echo &quot;Até logo&quot; <br>
                       sleep 4 <br>
                       clear <br>
                       break <br>
               elif (( $op_sub1 == 1 )); then <br>
                       echo &quot;Comando - sub-opção 1&quot; <br>
                       sleep 3 <br>
                       shift <br>
               elif (( $op_sub1 == 2 )); then <br>
                       echo &quot;Comando - sub-opção 2&quot; <br>
                       sleep 3 <br>
                       shift <br>
               else <br>
                       echo &quot;Opção não cadastrada.&quot; <br>
                       sleep 3 <br>
                       shift <br>
               fi <br>
<br>
elif (( $Lib == 2 )); then <br>
       echo &quot;comando 2&quot; <br>
       echo &quot;Obrigado por utilizar nosso sistema&quot; <br>
       echo &quot;Até logo&quot; <br>
       sleep 3 <br>
       shift <br>
<br>
elif (( $Lib == 3 )); then <br>
       echo &quot;comando 3&quot; <br>
       echo &quot;Obrigado por utilizar nosso sistema&quot; <br>
       echo &quot;Até logo&quot; <br>
       sleep 3 <br>
       shift <br>
<br>
elif (( $Lib == 4 )); then <br>
       echo &quot;comando 4&quot; <br>
       echo &quot;Obrigado por utilizar nosso sistema&quot; <br>
       echo &quot;Até logo&quot; <br>
       sleep 3 <br>
       shift <br>
<br>
else <br>
       echo &quot;Esta opção não encontra-se no sistema.&quot; <br>
       echo &quot;Favor entrar com as opções: 1-4&quot; <br>
       echo &quot;Para sair digite: 0&quot; <br>
       sleep 3 <br>
       shift <br>
fi <br>
done <br>
<br>
<br>
O que posso fazer neste código para que não ocorram mais erros? <br>
E se alguém tiver uma solução melhor q esta, agradeceria. <br>
<br>
<br>
[As partes desta mensagem que não continham texto foram removidas]<br>
<br>
</tt>




<br><br>
<tt>
---------------------------------------------------------------------<br>
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.<br>
---------------------------------------------------------------------<br>
Sair da lista: address@hidden<br>
---------------------------------------------------------------------<br>
Esta lista é moderada de acordo com o previsto em <a href="http://www.listas-discussao.cjb.net";>http://www.listas-discussao.cjb.net</a><br>
---------------------------------------------------------------------<br>
</tt>
<br><br>







   <br>
   <table border=0 cellspacing=0 cellpadding=2>
     <tr bgcolor="#FFFFCC">
<td align=center><font size=-1 color="#003399"><b>Yahoo! Grupos, um serviço oferecido por:</b></font></td>
     </tr>
     <tr bgcolor="#FFFFFF">
<td align=center width=470><table width=300 border=0 cellpadding=5 cellspacing=""><tr><td colspan=4><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=0/SIG=13k7voobn/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=050930-header&amp;id=2021&amp;as_opt=http://www.mercadolivre.com.br";><img src="http://www.mercadolivre.com/org-img/MLB/POP/2005/30_09/pop_header.gif"; width=300 height=63 alt="MercadoLivre.com - Onde você compra e vende de tudo! Clique e Confira!" border=0></a></td></tr><tr><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=1/SIG=187o0ssd8/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=050930-ps2mlmp&amp;id=2021&amp;as_opt=/jm/search?as_categ_id=4384$$as_price_min=640$$as_price_max=1500$$as_filtro_id=MPAGO$$as_pr_categ_id=AD$$as_display_type=G$$as_order_id=MAS_OFERTADOS$$as_filtro_id2=PRECIO_FIJO"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">PlayStation 2 a partir de R$ 659! Parcele!</a></td><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=2/SIG=18h64job8/*http://www.mercadolivre.com.br/jm/ms?site=324418&amp;word=050930-celmotcam&amp;id=2021&amp;as_opt=/jm/search?as_categ_id=5082$$noQCat$$as_display_type=G$$as_filtro_id=MPAGO$$as_filtro_id2=NUEVO$$as_pr_categ_id=$$as_price_min=415$$as_search_both=Y$$as_word=$$as_order_id=MAS_OFERTADOS"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">Celular Motorola com câmera a partir de R$ 449!</a></td></tr><tr bgcolor="#E8E8E8"><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=3/SIG=18nf189r2/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=050930-siemens_sl65&amp;id=2021&amp;as_opt=/jm/search?as_word=$$as_pr_categ_id=$$as_price_min=499$$as_search_both=Y$$as_categ_id=3811$$as_display_type=G$$as_order_id=MAS_OFERTADOS$$noQCat=Y$$as_filtro_id=MPAGO$$as_filtro_id2=NUEVO"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">Siemens SL65 com câmera a partir de R$ 730! </a></td><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=4/SIG=1833fpca9/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=50930-camdigmlmp&amp;id=2021&amp;as_opt=/jm/search?as_categ_id=1042$$as_pr_categ_id=AD$$as_filtro_id=MPAGO$$as_order_id=MAS_OFERTADOS$$as_price_min=390$$as_display_type=G$$as_price_max=1700$$as_filtro_id2=NUEVO"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">Câmeras Digitais a partir de apenas R$ 399! Parcele!</a></td> </tr><tr><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=5/SIG=18071v4b7/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=050930-mp3carropioneermlmp&amp;id=2021&amp;as_opt=/jm/search?as_categ_id=5675$$as_pr_categ_id=AD$$as_price_min=350$$as_display_type=G$$as_order_id=MAS_OFERTADOS$$as_filtro_id=MPAGO$$as_filtro_id2=PRECIO_FIJO"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">CD Players Pioneer a partir de R$ 369!</a></td><td width=150><a href="http://br.rd.yahoo.com/SIG=12ffhvj7b/M=371233.7216260.8122519.4826560/D=brclubs/S=2137111254:HM/Y=BR/EXP=1128556072/A=3039887/R=6/SIG=16nlj1eg1/*http://www.mercadolivre.com.br/jm/pms?site=324418&amp;word=050930--ipodmini&amp;id=2021&amp;as_opt=/jm/search?as_categ_id=6367$$as_display_type=G$$as_filtro_id=NUEVO$$as_filtro_id2=MPAGO$$as_price_min=735$$asorder_id=HIT_PAGE"; style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:10px;color:#000000">MP3 Player iPod a partir de R$ 799! Parcele!</a></td></tr></table></td>
     </tr>
         </table>







<br>
 <hr width=500>
<b>Links do Yahoo! Grupos</b><br>
<ul>
<li>Para visitar o site do seu grupo na web, acesse:<br><a href="http://br.groups.yahoo.com/group/shell-script/";>http://br.groups.yahoo.com/group/shell-script/</a><br> <li>Para sair deste grupo, envie um e-mail para:<br><a href="mailto:address@hidden?subject=Unsubscribe";>address@hidden</a><br> <li>O uso que você faz do Yahoo! Grupos está sujeito aos <a href="http://br.yahoo.com/info/utos.html";>Termos do Serviço do Yahoo!</a>.
</ul>
</br>




</body></html>

<br></font></BLOCKQUOTE>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]