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

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

Re: [shell-script] Array


From: Julio C. Neves
Subject: Re: [shell-script] Array
Date: Sun, 11 Jan 2009 10:36:17 -0200

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>

>   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 <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]



reply via email to

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