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

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

RES: [shell-script] Problemas com array shell


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Problemas com array shell
Date: Fri, 24 Jan 2003 12:28:12 -0300

Fala André,
o for separa os campos pelo conteúdo da variável IFS que por default é
branco, tab e enter. Veja só:
Em UNIX
echo "$IFS" | hd
0000    20 09 0a 0a                                         ...
Em LINUX
 echo "$IFS" | od -t x2
0000000 0920 0a0a

Neste dump em hexadecimal 20=espaço, 09=tab e 0a=enter. Então, para
finalizar, basta vc alterar o valor de IFS antes de executar o for.

OldIFS="$IFS"
IFS="\012"  # enter em octal
for ...
...
done
IFS="$OldIFS"

[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden


> -----Mensagem original-----
> De: André Aun [mailto:address@hidden]
> Enviada em: quinta-feira, 23 de janeiro de 2003 20:19
> Para: Lista Shell
> Assunto: [shell-script] Problemas com array shell
> 
> 
> Salve galera,
> 
> Seguinte... tenho uma array com o seguinte conteúdo, por exemplo:
> 
> deejah@freud:~/backup/scripts/teste$ var=(Arquivo Espacado.mp3 Nome 
> filme.avi)
> deejah@freud:~/backup/scripts/teste$ echo ${var[@]}
> Arquivo Espacado.mp3 Nome filme.avi
> 
> Bom... então são dois nomes de arquivo na váriável. Só que perceberam 
> que no echo foi tudo misturado? Por isso eu dei um jeito de separar 
> desta forma:
> 
> deejah@freud:~/backup/scripts/teste$ echo ${var[@]}
> Arquivo Espacado.mp3;Nome filme.avi
> 
> 
> Então beleza... o ";" delimita o nome do arquivo. Entao posso 
> separá-los 
> depois da seguinte forma:
> 
> deejah@freud:~/backup/scripts/teste$ echo ${var[@]} | sed -e 
> 's/;/\n/g'
> Arquivo Espacado.mp3
> Nome filme.avi
> 
> Pronto... só que os arquivos ainda estão com o nome espaçados... o 
> grande problema é o seguinte: quero usar uma linha inteira 
> dessa depois 
> num laço for.... assim:
> 
> for file in `echo ${var[@]} | sed -e 's/;/\n/g'`; do
>     ls -l $file
> done
> 
> Só que acontece que ao invés de pegar a linha inteira, ele vai pegar 
> cada palavra separada, assim:
> 
> Arquivo
> Espacado.mp3
> Nome
> filme.avi
> 
> Eu queria que ele usasse a linha inteira no for... alguém sabe como?
> 
> Obs: Eu poderia trocar os espacos com sed, mas não é isso que 
> eu quero. 
> Por enquanto, este tem que ser o nome do arquivo.
> 
> []'s
> 
> André Aun
> 
> 
> 
> ---------------------------------------------------------------------
> 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.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 



reply via email to

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