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

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

RES: [shell-script] Sobre shell, perl e funcionalidades


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Sobre shell, perl e funcionalidades
Date: Fri, 12 Nov 2004 13:45:30 -0300

Aê Aurélio,
tem uma diferençazinha no que vc explicou. Repare:

$ IFS=^
$ set - $(echo 3^2004-09-10^campanha1^pagina1^56)
$ echo $3
campanha1
$ linha="3^2004-09-10^campanha1^pagina1^56"
$ echo "$linha"
3^2004-09-10^campanha1^pagina1^56
$ echo $linha
3 2004-09-10 campanha1 pagina1 56

Vc disse que "o set - não splita pelo IFS modificado para :. mas se eu
colocar a string numa variável funciona" e no duro, o problema é que a
cadeia a ser "tokeneizada" (arghh) tem que ser exibida para o shell, para
que ele faça as devidas substituições. Mas isso não é caracteristico do set.
Isso é para todas instruções que usam o IFS como separador. Veja:

$ for i in 3^2004-09-10^campanha1^pagina1^56
> do echo $i
> done
3 2004-09-10 campanha1 pagina1 56
$ for i in $(echo 3^2004-09-10^campanha1^pagina1^56)
> do echo $i
> done
3
2004-09-10
campanha1
pagina1
56

[ ]s,
Julio Cezar Neves
- Programa de Software Livre -
Tel:+55 21 2528-7070 / +55 21 8112-9988
Fax: +55 21 2528-7646
mailto:address@hidden


| -----Mensagem original-----
| De: Aurelio Marinho Jargas [mailto:address@hidden]
| Enviada em: sexta-feira, 12 de novembro de 2004 10:59
| Para: address@hidden
| Assunto: RE: [shell-script] Sobre shell, perl e funcionalidades
| 
| 
| 
| alou,
| 
|  --- MrBiTs <address@hidden> escreveu: 
| 
| > Obrigado pelas dicas. Me explica uma coisa: o que o set - $linha
| > efetivamente faz ?
| 
| o "set - STRING" tokeniza a string, atribuindo a
| $1, $2, $3, ... os tokens encontrados. veja:
| 
|   $ set - um dois tres quatro
|   $ echo $1 - $2 - $3 - $4
|   um - dois - tres - quatro
|   $
| 
| mas foi boa tua pergunta. eu achava que o set -
| fazia o split pelo valor corrente do IFS (internal
| field separator), mas na verdade é pelo valor padrão
| do IFS, que é " ", \t e \n.
| 
|   $ IFS=:
|   $ set - a:b:c:d:e:f
|   $ echo $2 - $4
|   -
|   $
| 
| não funcionou. o set - não splita pelo IFS
| modificado para :. mas se eu colocar a string
| numa variável funciona:
| 
|   $ IFS=:
|   $ VAR=a:b:c:d:e:f
|   $ set - $VAR
|   $ echo $2 - $4
|   b - d
|   $
| 
| não por causa do set em si, mas porque o IFS
| modificado entra em ação ao mostrar o conteúdo 
| da variável, então o set - já a recebe separada
| por espaços em branco:
| 
|   $ IFS=:
|   $ VAR=a:b:c:d:e:f
|   $ echo $VAR
|   a b c d e f
|   $
| 
| mas como na prática geralmente o conteúdo a ser
| tokenizado vai estar numa variável, funciona.
| 
| por isso no teu problema usei o ^ como IFS, e depois
| o set -:
| 
| > > $ linha="3^2004-09-10^campanha1^pagina1^56"
| > > $ IFS=^
| > > $ set - $linha
| > > $ echo $3
| > > campanha1
| 
| mas veja a resposta do julio que ele mostrou como popular
| o array diretamente para a linha. faz tempão que não lido
| com arrays no shell, mas se não me engano eles são
| unidimensionais, então você não consegue fazer a matriz
| de linhas e colunas como provavelmente o perl faz. aí
| tem que manipular linha a linha no loop mesmo.
| 
| falou!
| 
| 
| =====
| -- 
| Aurelio Marinho Jargas, Curitiba, Conectiva
| Funcoes ZZ, versao nova http://aurelio.net/zz
| 
| 
|       
|       
|               
| _______________________________________________________ 
| Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o 
| discador agora! http://br.acesso.yahoo.com/
| 
| 
| ---------------------------------------------------------------------
| 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.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 




reply via email to

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