[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/