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

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

Res: [shell-script] Exportar variável de dentro de uma função globalment


From: Wagner Brasileiro
Subject: Res: [shell-script] Exportar variável de dentro de uma função globalmente
Date: Fri, 24 Sep 2010 19:28:17 -0700 (PDT)

É essa eu passei longe. rs.... Ia pastar um bom tempo até chegar a esta 
conclusão sozinho. 


Fiz assim:
function Funcao()
{
local v1 v2 v3
read v1 v2 v3 <<< "1 2 3"

echo $v1 > /dev/tty
echo $v2 > /dev/tty
echo $v3
}

var=$(Funcao)
echo $var
echo $var


E realmente funcionou!!!! Mas fica a pergunta: Como jogar isso para o mais alto 
nível dos shells, onde possa ver por todo o sistema, de fora dos scripts?
Estou com a sexta edição do seu livro na mão na página 223 onde vc diz 
exatamente isso que me explicou acima, que para passar valor para um nível 
superior "basta você atribuir a uma variável o valor de um Subshell fazendo 
assim: var=`subshell` 

Só que no exemplo acima que testamos o subshell é a função função, como atribuo 
isso externalmente ao script a nível de todo o sistema? Já tentei exportar e 
não 
funciona, o que chega mais próximo a isso é chamar o script com o source na 
frente, mas aí o script perde o controle, fica na dependência de outros
ainda assim fica preso aquele tty e à aquela execução.
Desculpe pelo aluguel, mas não encontrei nada satisfatório que pudesse me 
ajudar 
neste problema.

Meu muitíssimo obrigado!!!!

Um forte abraço,

Wagner Brasileiro



De: Julio C. Neves <address@hidden>

Para: address@hidden
Enviadas: Sexta-feira, 24 de Setembro de 2010 17:48:46
Assunto: Re: [shell-script] Exportar variável de dentro de uma função 
globalmente

Nananinanão Wagner,
se ele escreveu:
1
2
3
foi pq vc não criou nada para separar os resultados. Experimente fazer o
seguinte:
function Funcao()
{
local v1 v2 v3
read v1 v2 v3 <<< "1 2 3"

echo $v1 > /dev/tty
echo $v2 > /dev/tty
echo $v3
}

var=$(Funcao)
echo -e "=========================\n$var"

Vc verá que 1 e 2 foram para o terminal comandado pela função (por causa do
> /dev/tty). O que vc não explicitou que iria para a tela, foi para dentro
de Var.

Agora a tua saída será:
1
2
===============
3

Deu prá entender? ;)
Abc,
Julio


Em 24 de setembro de 2010 17:05, Wagner Brasileiro <
address@hidden> escreveu:

>
>
> Furo feio mestre, perdoe-me a distração!! rsrsrs
> bem, corrigi e se não mexi em nada errado ficou assim:
>
> #!/bin/bash
>
>
> function Funcao()
> {
> local v1 v2 v3
> read v1 v2 v3 <<< "1 2 3"
>
> echo $v1 > /dev/tty
> echo $v2 > /dev/tty
> echo $v3
> }
>
> var=$(Funcao)
> echo $var
>
> como resultado ele me imprimi:
>
> 1
> 2
> 3
> Pelo que eu entendi ele deveria printar isso duas vezes quando peço para
> ele
> fazer: echo $var
> Se pedir para fazer isso de fora do script na linha de comando ele continua
> a
> imprimir nada.
>
> Abc,
>
>
> Wagner Brasileiro
>
> ________________________________
> De: Julio C. Neves <address@hidden <julio.neves%40gmail.com>>
> Para: address@hidden <shell-script%40yahoogrupos.com.br>
> Enviadas: Sexta-feira, 24 de Setembro de 2010 16:04:18
>
> Assunto: Re: [shell-script] Exportar variável de dentro de uma função
> globalmente
>
> Mas Wagner,
> repare que no exemplo que dei, coloquei um monte reticências. Isso era para
> substituir um código qq. Na função que vc fez, deveria ter pelo menos
> atribuído valor às 3 variáveis.
>
> Após local a b c, insira:
> read a b c <<< "1 2 3"
>
> Vc vera que será jogado para a tela:
> 1
> 2
> e var conterá 3.
>
> Abc,
> Julio
>
> Em 24 de setembro de 2010 15:36, Wagner Brasileiro <
> address@hidden<wagnerbrasileirocardoso%40yahoo.com.br>>
> escreveu:
>
> >
> >
> > Uma correção, no outro exemplo que enviei também executei dentro do
> > programa
> > pedindo para imprimir: echo $var e na apareceu também.
> >
> > Um abraço,
> >
> >
> > Wagner Brasileiro
> >
> > ________________________________
> > De: Julio C. Neves <address@hidden 
><julio.neves%40gmail.com><julio.neves%
> 40gmail.com>>
> > Para: 
>address@hidden<shell-script%40yahoogrupos.com.br><shell-script%
> 40yahoogrupos.com.br>
>
> > Enviadas: Sexta-feira, 24 de Setembro de 2010 14:37:49
> > Assunto: Re: [shell-script] Exportar variável de dentro de uma função
> > globalmente
> >
> >
> > Fala Wagner,
> > se vc declarar uma variável antes de declarar a função e dentro desta
> > função
> > alterar seu valor, o corpo do prg verá este valor alterado.
> >
> > No entanto se vc está querendo passar valores de variáveis locais para o
> > prg, aí é um pouco diferente.
> >
> > No fragmento abaixo tenho 3 variáveis locais: v1, v2 e v3. V1 e v2 serão
> > mandadas para a tela e v3 será mandada para var, que é uma variável do
> prg.
> > Veja:
> >
> > function Funcao
> > {
> > local v1 v2 v3
> > ...
> > echo $v1 > /dev/tty
> > ...
> > echo $v2 > /dev/tty
> > ...
> > echo $3
> > }
> > # corpo do prg.
> > var=$(Funcao)
> >
> > De forma mais reduzida, tb poderíamos fazer:
> >
> > function Funcao
> > {
> > local v1 v2 v3
> > ...
> > {
> > echo $v1
> > ...
> > echo $v2
> > ...
> > } > /dev/tty
> > echo $3
> > }
> > # corpo do prg.
> > var=$(Funcao)
> >
> > Era isso?
> >
> > Abc,
> > Julio
> >
> > Em 24 de setembro de 2010 10:03, Wagner Brasileiro <
> > address@hidden<wagnerbrasileirocardoso%40yahoo.com.br>
> <wagnerbrasileirocardoso%40yahoo.com.br>>
>
> > escreveu:
> >
> > >
> > >
> > > Bom dia senhores,
> > >
> > > estou tendo problemas com o seguinte xcript:
> > http://pastebin.com/mTYuzM3g
> > >
> > > Estou tentando criar uma flag que seja visível em qualquer instância do
> > > Bash, em
> > > qualquer terminal a qualquer hora e acho que estou fazendo algo muito
> > > errado,
> > > pois se quer consigo visualizar as variáveis fora das funções, sei que
> é
> > > bem
> > > provável que meu erro seja justamente aí, sei que é possível exportar
> > > variáveis
> > > mas de dentro de uma função não sei se isso é possível de baixo para
> > cima,
> > > já li
> > > algo sobre ser impossível alterar valores de variáveis exportadas em
> > outras
> > >
> > > instâncias. Seria uma grande limitação, mas creio que com certeza
> alguém
> > > aqui
> > > deve ter alguma saída para esse problema, sei que o Bash é muito
> poderoso
> > > para
> > > ficar preso em algo tão simples. Li algo no livro do Julio sobre
> importar
> > > dados
> > > de um subshell, talvez seja isso que estou precisando, mas não entendi
> > > muito bem
> > > o exemplo. Agradeço por qualquer ajuda. Desde já saliento que com
> certeza
> > > estou
> > > fazendo algo errado ao exportar de dentro da função, não sei o que, mas
> > me
> > > parece errado em vista as outras linguagens, e é claro, também não
> > > funciona!
> > > rs.. Já li sobre mas não achei o exemplo que eu quero ainda de uma
> função
> > > retornando um valor global.
> > >
> > > Obrigado,
> > >
> > > Wagner Brasileiro
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > ------------------------------------
> >
> >
> > ----------------------------------------------------------
> > 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<shell-script-unsubscribe%40yahoogrupos.com.br>
>>
> <shell-script-unsubscribe%40yahoogrupos.com.br>
>
> >
> > ----------------------------------------------------------
> > 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
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> ------------------------------------
>
> ----------------------------------------------------------
> 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<shell-script-unsubscribe%40yahoogrupos.com.br>
>
> ----------------------------------------------------------
> 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
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



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

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


      

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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