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

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

Re: [shell-script] Variável


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Variável
Date: Fri, 2 Feb 2007 11:32:48 -0200

fique atento

$ cat xxx
#!/bin/bash
echo SHLVL = $SHLVL
echo antes  = $TESTE
TESTE=lala
echo depois = $TESTE

$ export TESTE=limao

$ ./xxx
SHLVL = 2
antes = limao
depois = lala

$ echo $TESTE
limao

$ . ./xxx # usando o comando source ou .
SHLVL = 1
antes = limao
depois = lala

Ou seja, vc não consegue alterar a sua variavel no shell pai por que
vc executa o script no shell filho, as variaveis só vão, não voltam.

uma boa explicação esta aqui
http://www.meleuzord.hpg.ig.com.br/textos/bashscripting.txt

--> SHLVL

  Esta variável armazena quantos shells você executou a partir da
primeira shell.
  Confuso? Vamos a um exemplo.
  Imagine que você está usando o bash e executou o bash de novo, nesta
situação o seu SHLVL vale 2. Veja isto:

/* -=-=-= exemplo =-=-=- */
$ echo $SHLVL
1
$ bash          # estou executando o bash a partir do bash
$ echo $SHLVL
2
$ exit          # saí do segundo bash
exit
$ echo $SHLVL
1
/* -=-=-= exemplo =-=-=- */

  Quando você inicializa scripts a partir do comando "source" o script é
executado no shell pai, portanto se tiver um "exit" no script você vai
executar um logoff. É aí que está a utilidade da variável SHLVL. Quando
você está no shell primário o valor de SHLVL é 1. Então você pode, através
de um "if" por exemplo, executar o "exit" só se SHLVL for diferente de 1
(mais informações sobre o source em "6.1 Funções como comandos").

Pratique um pouco diferentes usos e formas de setar variaveis e abrir
sub-shells, é bom pra praticar este conceito (q as vezes atrapalha
quando a gente não se dá conta dos detalhes).

On 2/2/07, luiz henrique campos <address@hidden> wrote:






Olá grupo,
 sou novato no grupo e estou com uma duvida em uma questão que olhei no 
selfteste:

 se eu dê o comando "export TESTE=snuff" e apos isso criar um script da 
seguinte forma:
 #!/bin/bash
 USER=testeking
 TESTE=$USER

 porque
 apos executar esse script a variavel $TESTE continua com o valor "nuff"
 ?????? Sendo que se eu nao usar o script e da o seguinte comando
 TESTE=snuff2 (direto, sem exportar), a variavel vai pegar o resultado
 "snuff2".
 Por que isso acontece??

 __________________________________________________
 Fale com seus amigos  de graça com o novo Yahoo! Messenger
 http://br.messenger.yahoo.com/



--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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