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 <[EMAIL PROTECTED]> 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


---------------------------------------------------------------------
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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a