[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Exportar Variável??
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Exportar Variável?? |
Date: |
Tue, 24 Jan 2006 13:08:24 -0200 |
Ola,
vc não consegue porque, provavelmente, a extrutura
cat arquivo | while ... ; do ... done
é feita em um subshell. como o shell faz passagem de parâmetros por
cópia, e não por referência, vc cria variaveis dentro do sub-shell e,
ao seu fim, elas são perdidas com to termino do sub-shell. vc só
consegue exportar "pra dentro", isto é, para todos os sub-shells que
vc abre, não consegue voltar.
por que vc precisa armazenar um arquivo em uma matriz ? vc pode pegar
uma linha específica do arquivo assim:
head -X arquivo | tail -1
vai pegar a linha X, para saber o numero de linhas vc pode usar o `wc
-l arquivo` por exemplo. São muito mais rapidos e praticos do que usar
matrizes em bash, IMHO.
Se vc insiste em gravar em uma matriz - pode ser util em algum caso -
vc pode usar esta extrutura :
MATRIZ=( $(cat arquivo) )
ps: talvez tenha que transformar o IFS em '\n' apenas... no cygwin
aparentemente funciona assim, não tive tempo de testar melhor em outro
ambiente.
Abraços
Em 24/01/06, vmlinuzbr <address@hidden> escreveu:
> Pessoal, tenho o seguinte trecho de script:
>
> > i=1
> > cat tags.db | \
> > while read line
> > do
> > TG[$i]=$line
> > i=`expr $i + 1`
> > done
> > echo ${TG[2]}
>
> Ele lê o arquivo tags.db linha por linha e armazena cada linha num
> elemento da matriz TG. Porém fora deste loop não consigo acessar os
> elementos dela(a linha do echo por exemplo). Tentei exportar ela mas
> não funcionou. Como fazer?
>
--
Tiago B Peczenyj
Linux User #405772
echo 435991959574767208964049173891616024402182829083447460457482P | dc