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

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

RE: [shell-script] To certo ou To errado !!!


From: MrBiTs
Subject: RE: [shell-script] To certo ou To errado !!!
Date: Mon, 19 Dec 2005 10:22:00 -0300

/*
#!/bin/bash

function maneiro
{
        echo "$1"
}

function index
{
        local var="Olha que trem doido"
        maneiro "$var"
}

index


olha soh que doido, ainda continua listando o conteudo da variavel $var ...
*/

E não era para isso acontecer ? Até onde ví em sua lógica, é isso que você
manda o script fazer.
Vamos analisar o script:

1 - Definimos a funcao "maneiro"
2 - Definimos a funcao "index"
3 - Chamamos a funcao "index"
4 - Na funcao index, definimos uma variavel local chamada var, com valor
"Olha que trem doido"
5 - Em seguida, a funcao index chama a funcao maneiro, passando como
parâmetro a variável local var 
6 - A funcao maneiro faz um echo em seu parametro, que é o conteúdo da
variavel local var definida na funcao index.

É bastante óbvio para mim que ele continue "listando o conteúdo da variável
$var"

Agora, vamos modificar um pouco o script:

#!/bin/bash

function maneiro
{
        echo "$var"
}

function index
{
        local var="Olha que trem doido"
        maneiro
}

index

O resultado será Olha que trem doido, já que a funçao "maneiro" foi chamada
no mesmo contexto ( sub-shell ) da definicao da variável local $var, sendo
então seu conteúdo preservado e passado para a funcao "maneiro".

Agora, se o script for assim:

#!/bin/bash

function maneiro
{
        echo "$var"
}

function index
{
        local var="Olha que trem doido"
}

index
maneiro

Ele nao retornará nada, já que maneiro é executada em outro contexto.

Nada doido aí. Basta apenas ter o entendimento de como o SO e shell
funcionam.

------
GPG Public Key
http://keyserver.veridis.com:11371/export?id=-6037232142263389818
         \\|||//
         (.) (.)
----ooOO--( )--OOoo-----
      MrBiTs
http://www.mrbits.com.br
  address@hidden
------------------------



reply via email to

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