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

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

Re: [shell-script] abortar "case in esac"


From: Fabiano Caixeta Duarte
Subject: Re: [shell-script] abortar "case in esac"
Date: Wed, 25 Jan 2006 23:13:51 -0200
User-agent: Thunderbird 1.5 (X11/20051201)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Salve!

Falemos, primeiramente, sobre o uso de $?

Esta variável contém o valor inteiro passado na chamada da função exit
do último programa/comando executado na shell corrente.

Assume-se que um retorno igual a 0 denota sucesso e qualquer valor
diferente de 0 denota erro.

Assim, é equivalente fazer:

$ comando && echo OK || echo ERRO
$ comando; if [ $? -eq 0 ]; then echo OK; else echo ERRO; fi

Em seu script, eu sugiro a construção

1) IP=$( dialog --stdout --inputbox 'Digite o Nome' 0 0 )
   if [ $? -eq 1 ]; then
     clear
     OK=0
   fi
   ;;

Esta é a contrução mais didática, um opcional seria

1) IP=$( dialog --stdout --inputbox 'Digite o Nome' 0 0 )
   [ $? -eq 1 ] && { clear; OK=0; }
   ;;

Outra questão diz respeito ao teste utilizado no 'until'. Ele não
funciona como na liguagem C e derivadas.

Sempre que vc for fazer teste entre colchetes, faça uma comparação.

Então:
until [ "$OK" -eq 1 ]; do comandos; done

Fabiano Caixeta Duarte
Consultor em soluções para Redes de Computadores
Ribeirão Preto - SP


mundojovem escreveu:
> ola pessoal!
> 
> Nescessito um luz no final do tunel, vejam parte do script abaixo:
> 
> *****************************************************
> #!/bin/bash
> until [ "$OK" ]
> do
> 
> Opcao=$(dialog --stdout --menu 'Escolha:' 0 0 0 \
> 1 "Nome" \
> 2 "" \
> X "Sair")
> 
> [ $? -eq 1 ] && Opcao="Z"
> 
> case "$Opcao"
> in
>         1) IP=$( dialog --stdout --inputbox 'Digite o Nome' 0 0 ) &&
>            [ $? -eq 1 ] && (*1)?????????????????
>            clear
>            OK=
>         ;;
>         2)
>         .......
>         ;;
>         X)
>            clear
>            OK=1
>            stty intr ^C
>            exit
>         ;;
>         Z)
>            clear
>            OK=
>         ;;
>         *)
>            clear
>            echo " "
>            dialog --backtitle "ALTERNATIVA INVALIDA" \
>                 --cr-wrap \
>                 --title 'ERRO' \
>                 --msgbox "Deve escolher alternativa valida!!!" \
>             17 55 &&
>            OK=
>            clear
>         ;;
> esac
> done
> exit
> *****************************************************
> PROBLEMA: A dialog inputbox tem os botoes OK e CANCEL, como aborta o
> "case" se o usuario esclolher cancel (*1) --> [ $? -eq 1 ] && (*1)?? e
> voltar para as opções (Opcao) de escolha.
> jah tentei assim:
> ------> [ $? -eq 1 ] && ${0}  *** VAI PARA A OPÇÃO MAS DÁ ERRO AO SAIR
> ------> [ $? -eq 1 ] && break *** DÁ ERRO
> ------> [ $? -eq 1 ] && exit  *** ABORTA O ESCRIPT 
> 
> Se alguem poder me ajudar agradeço desde jah.
> 
> Jorge Luiz
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> 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
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
>  
> Links do Yahoo! Grupos
> 
> 
> 
> 
>  
> 
> 
> 
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFD2CJP++b4Zs4fOnMRAjFlAKCGI/hpDTXnH0Pk40HHYWTs6owsPQCghPN4
mHFU3vYPKqWXqo1+4ytDtVk=
=L5Kt
-----END PGP SIGNATURE-----


reply via email to

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