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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Menu em script
Date: Thu, 6 Oct 2005 11:34:54 -0300

alias, por que vc informa uma opção para sair e um while true (ou
while :) para manter o menu ? seria mais logico ter uma variavel sair

sair=false
while [[ "$sair" != "true" ]]
do ...
...
0) sair=true ;;
...
done

se esta variavel for local, pode reutiliza-la em todos os sub-menus

Em 06/10/05, Reinaldo Marques de Lima<address@hidden> escreveu:
>  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>
>
>
>
>
>
> ---------------------------------------------------------------------
>  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: address@hidden
> ---------------------------------------------------------------------
>  Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>
>
>
>
>  Yahoo! Grupos, um serviço oferecido por:
>
> PlayStation 2 a partir de R$ 659! Parcele!Celular Motorola com câmera a
> partir de R$ 449!
> Siemens SL65 com câmera a partir de R$ 730! Câmeras Digitais a partir de
> apenas R$ 399! Parcele!
> CD Players Pioneer a partir de R$ 369!MP3 Player iPod a partir de R$ 799!
> Parcele!
>  ________________________________
>  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:
> address@hidden
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.


reply via email to

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