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

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

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


From: Aurelio Marinho Jargas
Subject: RE: [shell-script] Sobre shell, perl e funcionalidades
Date: Fri, 12 Nov 2004 09:58:57 -0300 (ART)

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/


reply via email to

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