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 11:27:43 -0700 (PDT)

Obrigado pela atenção Julio!

Vamos lá,
Pelo que eu entendi do seu exemplo, qaundo executasse este código deveira ter 
em 
var=$(Funcao) o que seria impresso por echo $3, ou seja, o resultado da função 
Funcao, já que as duas outras variáveis foram jogadas para os tty, logo seria 
certo fora no corpo do programa pedir para imprimir $var, fiz isso como no 
bloco 
a baixo e para minha surpresa o mesmo acontece como no meu programa, nada foi 
impresso:



function Funcao()
{
    local v1 v2 v3
    echo $v1 > /dev/tty
    echo $v2 > /dev/tty
    echo $3
}

var=$(Funcao)


na linha de comando:
$ echo $var

Não sei se entendi errado seu exemplo, li no seu livro sobre devolver valor ao 
shell mas não compreendi muito bem, no meu caso o shell que chamou é e linha de 
comando, no meu exemplo em particular do pastebin, se rodar o script com source 
na frente ele se comporta como eu imaginava, porém queria uma maneira do 
próprio 
script injetar isso de volta nas variáveis do sistema de ambiente ou algo 
assim, 
poderia fazer via arquivo, o que na minha opinião ficaria muito gambiarra e não 
me parece ser a forma correta. Voltando ao meu exemplo do pastebin, mesmo 
usando 
o source na frente não vejo como fazer isso automaticamente pois se fizer outro 
script o chamando com o source na frente os resultados também se perderão na 
linha de comando, e ainda assim, como se trata de um script de firewall poderia 
ser acessado por qualquer usuário ou qualquer terminal por isso preciso que ele 
seja visível a todo sistema como uma variável de ambiente, como se injetasse 
ele 
no /etc/profile.

Obrigado e um abraço Julio!

Wagner Brasileiro
      




________________________________
De: Julio C. Neves <address@hidden>
Para: address@hidden
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> 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
---------------------------------------------------------------------
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]