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

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

Re: [shell-script] Array


From: Rafael Dutra
Subject: Re: [shell-script] Array
Date: Mon, 12 Jan 2009 10:25:02 -0200
User-agent: Thunderbird 2.0.0.17 (X11/20080914)

Júlio, exatamente isso, e obrigado por este link, explicou ALGUMAS dúvidas.

Forte abraço

Julio C. Neves disse:


Rafael,
me esqueci de colocar no e-mail que a teoria necessária para entender, está
aqui <http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#O_comando_eval <http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#O_comando_eval>>,
escrita em português e cheio de exemplos.
--
Abração,
Julio
*Cursos de Shell e Zenity nos finais de semana:
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988
*
2009/1/11 Julio C. Neves <address@hidden <mailto:julioneves%40openoffice.org>>

 > Fala Rafael,
 > Se vc está sob o informal Bash, a melhor sintaxe é:
 >
 > set_filial()
 > {
 > FILIAL=$(tr a-z A-Z <<< $1)
 > echo Setando filial $(eval echo \${$FILIAL'[@]'})
 > }
 >
 > Sob o ksh (um interpretador de terno ;), deve-se fazer:
 >
 > set_filial()
 > {
 > FILIAL=$(echo $1 | tr '[a-z]' '[A-Z]')
 > echo Setando filial $(eval echo \${$FILIAL'[@]'})
 > }
 >
> O que vc está fazendo é uma indireção, isto é, vc quer listar uma variável
 > que está dentro de outra (equivale a um ponteiro apontando para outro
> ponteiro). Para isso o shell precisa de dar duas passadas no cmd. Na 1a ele
 > resolve uma variável e na segunda resolve a expressão.
 > --
 > Abração,
 > Julio
 > Cursos de Shell e Zenity nos finais de semana:
 > - Em SP ligue (11) 2125-4747;
 > - Em DF ligue (61) 3223-3000;
 > - Turmas fechadas em outras cidades ligue (21) 8112-9988
 >
> 2009/1/11 Rafael Dutra <address@hidden <mailto:raffaeldutra%40gmail.com>>
 >
 > Boa noite.
 >>
 >> Tenho uma dúvida em relação a array.
 >>
 >> Tenho por exemplo.
 >> BAGE=("bage" "10.10.8.5" "10.10.8.1")
 >> ALEGRETE=("alegrete" "10.10.12.5" "10.10.12.1")
 >> CAPAO_DO_LEAO=("capao_do_leao" "10.10.16.5" "10.10.16.1")
 >>
 >> e a função set_filial
 >>
 >> set_filial()
 >> {
 >> FILIAL=$(echo $1 | tr [a-z] [A-Z])
 >> echo "Setando filial ${FILIAL[1]}"
 >> }
 >>
 >> em linha de comando, eu passo por parâmetro desta maneira:
 >> ./redes -f bage
 >>
>> onde -f chama a função set_filial e bage eu transformo em para maiusculo.
 >>
 >> O que não estou conseguindo é transformar o meu segundo parametro em
 >> variável para ser chamada como tal no array.
 >>
 >> Se eu colocar no lugar de FILIAL - BAGE por exemplo, funciona
 >> perfeitamente, gostaria de saber a explicação, e se possível, sugestões.
 >>
 >> Obrigado.
 >>
 >> --
 >> cat << EOT
 >>
>> Rafael Dutra <address@hidden <mailto:raffaeldutra%40gmail.com> <raffaeldutra%40gmail.com>>
 >> Estrela - RS - Brasil
 >> Linux user #376.904
 >> Tel. +55 51 93068575
 >> echo 1244394795515721490698P | dc
 >> # while true; do beer + beer; done
 >>
 >> EOT
 >>
 >>
 >
 >
 >
 >
 >

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



--
cat << EOT

Rafael Dutra <address@hidden>
Estrela - RS - Brasil
Linux user #376.904
Tel. +55 51 93068575
echo 1244394795515721490698P | dc
# while true; do beer + beer; done

EOT


reply via email to

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