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

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

Re: [shell-script] retorno à função


From: Julio C. Neves
Subject: Re: [shell-script] retorno à função
Date: Mon, 4 Nov 2013 15:33:39 +0000

Flavio, concordo inteiramente com vc. A recursividade, em 99% dos casos é desnecessária e onera pra chuchu o sistema. Esse prg estaria muito mais bem escrito, se tivesse a seguinte forma:

Principal ()
{
    Escolha=$(kdialog --title "kimagens - Organizando de imagens iso" \
        --menu "Selecione a opção desejada:" \
        a "Listar imagens por distribuição" \
        b "Listar imagens por data de download" \
        c "Baixar imagem ISO" \
        d "Verificar integridade de imagens baixadas" \
        e "Cadastrar fonte de download" \
        f "Reparar fonte de download" \
        g "Ler manual de ajuda" \
        h "Retornar ao menu teste")
}
Principal
case $Escolha in
    h) Principal;;
    *) kdialog --title "Em construção" --msgbox "Em construção";;
esac
}

Mas no duro mesmo, nem é necessário o uso de funções.


Abcs,
Julio
@juliobash
A partir de 25/11 estarei ministrando um curso completo de Shell no Rio de Janeiro.



Em 4 de novembro de 2013 12:08, Flavio Steimacher <address@hidden> escreveu:
 

eu não recomendaria a recursividade nesse caso...
por exemplo, se vc sempre pedir a opção "h", sempre será aberto mais uma chamada para a função Principal, ou seja, se eu pedir 30 vezes o "h" terá 30 sessões do menu aberta em memória.

Nesse caso é melhor utilizar um while ( true ); do
     comandos;
done

e na opção h ficaria:
h) return 0;;

Além disso o retorno se faz com a chamada 'return' como no caso acima.




Em 4 de novembro de 2013 09:59, Gustavo S. de Lima <address@hidden> escreveu:
 

Modifiquei mais um pouco o código, agora ele resolve as opções do case,
menos a que retornaria a função.

Principal {


escolha=$(kdialog --title "kimagens - Organizando de imagens iso" \
--menu "Selecione a opção desejada:" \
a "Listar imagens por distribuição" \
b "Listar imagens por data de download" \
c "Baixar imagem ISO" \
d "Verificar integridade de imagens baixadas" \
e "Cadastrar fonte de download" \
f "Reparar fonte de download" \
g "Ler manual de ajuda" \
h "Retornar ao menu teste")

case $escolha in
a) kdialog --title "Em construção" --msgbox "Em construção";;
b) kdialog --title "Em construção" --msgbox "Em construção";;
c) kdialog --title "Em construção" --msgbox "Em construção";;
d) kdialog --title "Em construção" --msgbox "Em construção";;
e) kdialog --title "Em construção" --msgbox "Em construção";;
f) kdialog --title "Em construção" --msgbox "Em construção";;
g) kdialog --title "Em construção" --msgbox "Em construção";;
h) Principal;;
esac
}

Ele acusa como erro que o } é um token não esperado. Mas já tentei com
ele antes do case também.

Gustavo

Em 2013-11-04 09:52, Tiago Peczenyj escreveu:

> Ola
>
> acho que ja foi respondido mas... eu jamais daria um nome a uma
> função ou subrotina com caracteres acentuados. o conjunto a-z A-Z 0-9
> _ é extremamente confiavel e vc não tera surpresas se utilizar algum
> conjunto diferente de variaveis de ambiente ou se preocupar com
> character encoding.
>
> por exemplo, a letra á pode ser representa, em UTF-8, de duas formas
> diferentes, uma como a letra "a com acento grave", e outra com "letra
> a SEGUIDA de acento" que são mostrados da mesma forma, mas são
> conjuntos de bytes diferentes e não são a mesma coisa (não no sentido
> de igualdade do conteudo). para isso existe a normalização NFC, NFD,
> etc.
>
> http://unicode.org/reports/tr15/ [1]

>
> infelizmente eu acho isto um problema dificil demais para
> identificarmos em poucos minutos, ainda mais se for um script
> critico.
> minha experiencia diz para ser precavido :)
>
> 2013/11/4 Gustavo S. de Lima <address@hidden>
>
>>  
>>
>> Caros, estou com uma dúvida quanto ao retorno em uma função através
>> do
>> case.
>>
>> função
>> {
>> variavel=$(kdialog --title "exemplo"
>> --menu "exemplo"
>> a "opcao1"
>> b "opcao2"
>> c "opcao que eu gostaria que retornasse para a funcao"
>> }
>> case $variavel in
>> a) echo "opcao1";;
>> b) echo "opcao2";;
>> *) função;;
>> esac
>>
>> Eu sei que o esquema acima não parece lógico. Mas eu gostaria que
>> fossem as opções que ainda não estão prontas que retornassem a
>> função
>> original.
>>
>> O erro acusado quando escolho a opção que ainda não possui entrada
>> no
>> case é:
>> função: comando não encontrado
>>
>> É um erro de sintaxe né?
>>
>> Gustavo
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://about.me/peczenyj [2]
>
>
> Links:
> ------
> [1] http://unicode.org/reports/tr15/
> [2] http://about.me/peczenyj
> [3]
>
> http://br.groups.yahoo.com/group/shell-script/post;_ylc=X3oDMTJxODY5OXZuBF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BG1zZ0lkAzM2NzMzBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTM4MzU2NTk3MQ--?act=reply&messageNum=36733
> [4]
>
> http://br.groups.yahoo.com/group/shell-script/post;_ylc=X3oDMTJlMWE5bHV2BF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM4MzU2NTk3MQ--
> [5]
>
> http://br.groups.yahoo.com/group/shell-script/message/36729;_ylc=X3oDMTM2aXI2NWFvBF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BG1zZ0lkAzM2NzMzBHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTM4MzU2NTk3MQR0cGNJZAMzNjcyOQ--
> [6]
>
> http://br.groups.yahoo.com/group/shell-script/members;_ylc=X3oDMTJmMW9hZHY0BF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEzODM1NjU5NzE-?o=6
> [7]
>
> http://br.groups.yahoo.com/group/shell-script;_ylc=X3oDMTJlNjRyOTdlBF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM4MzU2NTk3MQ--
> [8] http://www.listas-discussao.cjb.net
> [9]
>
> http://br.groups.yahoo.com/;_ylc=X3oDMTJkczZ1MXByBF9TAzk3NDkwNDM1BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzgzNTY1OTcx
> [10] http://info.yahoo.com/legal/br/yahoo/utos/terms/


--
Gustavo S. de Lima
Logicus Tecnologia de Informação e Comunicação




--
Atenciosamente,

Flavio Steimacher
DBA Oracle
LPIC1 - Linux Professional Institute Certified
CLA - Novell Certified Linux Administrator
DCTS - Novell Data Center Technical Specialist



reply via email to

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