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

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

Re: [shell-script] Re: explode() em shell?!?!


From: Julio C. Neves
Subject: Re: [shell-script] Re: explode() em shell?!?!
Date: Tue, 25 Jul 2006 14:01:08 -0300

>
> On 7/25/06, Jorge Pereira <address@hidden> wrote:
> > Meu deus amigos do mundo bash!!! que confusão!!!!!!!!!!!!!!!!
> >
> > eu preciso apenas disto.
> >
> > _minhafuncao "teste" "eu:quero:isto:neste:valor:teste"
> >
> > echo ${teste[0]}
> > echo ${teste[1]}
> > echo ${teste[2]}
> > echo ${teste[3]}
> >
> > entende? preciso que la na função ela consiga declarar um valor e se
> torne
> > global para eu acessar do script que chamou ela, so isto!! :P
> > eu havia feito assim olha.
> >
> > # @func:   _explode()
> > # @Return: Array
> > # @Args:   argv[1]="token", argv[2]="arrayname", argv[3]="String"
> > # @Desc:   Make array of token in string (argv[3])
> > # @Author: Jorge Pereira
> > function _explode(){
> >     local n=0
> >     _arrayName="${1}"
> >     _token="${2}"
> >     _buffer="${3}"
> >
> >     for _strtmp in $(echo "${_buffer}" | tr "${_token}" " ")
> >     do {
> >         eval "${_arrayName}[${n}]="${_strtmp}""
> >         let n=n+1
> >     } done
> > }
> >
> > sacaram?
> > Julio, grande "Mestre dos magos" do shell!!! sei que você tem alguma
> forma
> > ninja de resolver isto, basta uma sugestão!!!
>

Grande só se for em volume :)
Numtôtindendendo! a sua função funciona (sem trocadilhos). Veja só:

$ cat arr
# @func:   _explode()
# @Return: Array
# @Args:   argv[1]="token", argv[2]="arrayname",argv[3]="String"
# @Desc:   Make array of token in string (argv[3])
# @Author: Jorge Pereira
function _explode(){
    local n=0
    _arrayName="${1}"
    _token="${2}"
    _buffer="${3}"

    for _strtmp in $(echo "${_buffer}" | tr "${_token}" " ")
    do {
        eval "${_arrayName}[${n}]="${_strtmp}""
        let n=n+1
    } done
}
_explode "teste" : "eu:quero:isto:neste:valor:teste"
echo ${teste[@]}
eval echo \${$_arrayName[0]}
eval echo \${$_arrayName[1]}
eval echo \${$_arrayName[2]}
$ ./arr
eu quero isto neste valor teste
eu
quero
isto

Não dá para entender a sua agonia. Só inseri as últimas 4 linhas no seu
script para chamar a função e mostrar os valores assumidos na variável
passada como parâmentro.

Abraços,
Julio
:wq

>
> > while :
> > do
> >   echo "HELPEEEEEEEEEEEEEEEEEE"
> > done
> >
> > []s
> >
> >
> > On 7/25/06, Julio C. Neves <address@hidden> wrote:
> > >
> > > Aê Fernando,
> > > Se é para pegar de uma variável podemos usar Here Strings:
> > >
> > > $ frutas="pera uva maçã"
> > > $ read f1 f2 f3 <<< "$frutas"
> > > $ echo $f1
> > > pera
> > > $ echo $f2
> > > uva
> > > $ echo $f3
> > > maçã
> > >
> > > Se é para ler arquivos comportados (como vc falou), suponha que este
> > > arquivo
> > > tem 3 colunas separadas por espaços em branco. Então a melhor forma de
> > > lê-lo
> > > seria:
> > >
> > > while read c1 c2 c3
> > > do
> > >     echo $c1
> > >     echo $c2
> > >     echo $c3
> > > done < arquivo
> > >
> > > Abração
> > > Julio (chegando agora das férias)
> > >
> > > Cumequié Tiago? Existem 1000 maneiras invente a sua :)) É isso???
> > >
> > >
> > > 2006/7/24, Fernando Lemes da Silva <address@hidden>:
> > >
> > > >
> > > >
> > > >    Olá Fernando,
> > > >
> > > >    Sim... mas é que eu quero ler uma linha de um arquivo que pode
> conter
> > > > um ou
> > > > mais items.. e é mais facil eu usar o "set -" (pois os campos são
> "bem
> > > > comportados", ou seja, não contém espaços) e usar um while e shift
> para
> > > > percorrer a lista.. (também fiz com cut, mas deu mais trabalho...)
> > > >
> > > >    []'s
> > > >
> > > > --
> > > >    0010111100101010010100110100100101000111
> > > >        Fernando LEMES da Silva
> > > >        M$N: ferlemes AT yahoo com br
> > > >        www.koho.com.br (0x53E56DAA)
> > > >    0101001101001001010001110010101000101111
> > > >
> > > >
> > > > Em Segunda 24 Julho 2006 18:05, Fernando Zank escreveu:
> > > > > Desculpa se eu estiver falando besteira, mas não tenho muita
> > > experiência
> > > > > com o comando 'cut', mas você não poderia usar o cut e passar o
> espaço
> > > > como
> > > > > delimitador ?
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > [ ]s,
> > > Julio (http://www.julioneves.com) <http://www.julioneves.com%29> <
> http://www.julioneves.com%29>
> > > Participe do 4o CONISLI - Congresso Internacional de Software Livre,
> dias
> > > 7 a 11 de novembro - SESC Vila Mariana - SP
> > > www.conisli.org
> > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> >
> > --
> > Regards,
> > +
> >
> ---------------------------------------------------------------------------------+
> > Jorge Pereira, From: Olinda/Pe/Brazil
> > Home:  http://www.jorgepereira.com.br/
> > E-mail:  address@hidden, address@hidden
> > Mobile: +55 (81) 8833-2484
> > My Public Key: http://www.jorgepereira.com.br/public.pgp
> > +
> >
> ---------------------------------------------------------------------------------+
> >     "Se você ama alguma coisa, liberte-a;
> >    Se ela não voltar a ti, cace-a e mate-a."
> >
> +----------------------------------------------------------------------------------+
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ---------------------------------------------------------------------
> > 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
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer
>
> 
>



-- 
[ ]s,
Julio (http://www.julioneves.com)
Participe do 4o CONISLI - Congresso Internacional de Software Livre, dias
7 a 11 de novembro - SESC Vila Mariana - SP
www.conisli.org


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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