[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Problemas com array shell,
Julio Cezar Neves - DATAPREVRJ <=