Hummm

Versao 1) Versão kung-fu
$ manda_brasa(){
   eval "$1=(${2//:/ })"
}

$manda_brasa array "historias:que:nossas:babas:nao:contavam"

$echo ${array[0]}
historias
$ echo ${array[1]}
que
$ echo ${array[2]}
nossas
$ echo [EMAIL PROTECTED]
6

Versao 2) Agora escapando os espacos em branco!

manda_brasa(){
  A=${2// /\\ }
 eval "$1=(${A//:/ })"
}
$ manda_brasa array "historias que nossas:babas:nao:contavam"
$ echo ${array[0]}
historias que nossas
$ echo [EMAIL PROTECTED]
4

Serve?

On 7/25/06, Jorge Pereira <[EMAIL PROTECTED]> 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!!!
>
> while :
> do
>   echo "HELPEEEEEEEEEEEEEEEEEE"
> done
>
> []s
>
>
> On 7/25/06, Julio C. Neves <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>:
> >
> > >
> > >
> > >    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>
> > 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:  [EMAIL PROTECTED], [EMAIL PROTECTED]
> 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: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 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


---------------------------------------------------------------------
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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a