[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-----