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

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

Re: [shell-script] Guardar valor de saida de comando em variavel


From: Tiago Peczenyj
Subject: Re: [shell-script] Guardar valor de saida de comando em variavel
Date: Sun, 3 Jun 2012 09:59:14 -0300

Pessoalmente eu evitaria criar variaveis do tipo

alguma_coisa_1
alguma_coisa_2
alguma_coisa_3

justamente porque é dificil acessa-las ou descobrir quantas ou quais
existem. nesses casos o array serve como uma luva.

por outro lado pode ser que dado uma condição devemos criar uma
variavel com determinadas caracteristicas. isso pode ser util em um
caso mais complicado, quando queremos criar um script de build de
algum aplicativo que dependendo do sistema operacional e arquitetura
precisa de um set de variaveis diferente E existe alguma regra facil
para criar os nomes, porém mesmo assim acredito que existe alguma
ferramenta que facilita isso sem recorrer a eval's por exemplo.

2012/6/3 Julio C. Neves <address@hidden>:
> Fala Fernando,
> provavelmente o uso de vetores, como vc sugeriu, é a melhor solução e, como
> vc disse, em muitas linguagens (e conheço diversas) não é possível usar
> variáveis como nome de variáveis, mas em shell existe o evel. Enrola a
> guerra, mas resolve.
>
> Suponha que eu queira guardar a saída de um ls em uma variável que tem uma
> variável no nome. Veja:
>
> i=12
> eu quero colocar em a$ib (a12b) a saída do ls. Faço assim:
>
> $ var="a${i}b=\"$(ls)\""
>
> repare que as \" são para colocar aspas literais na saída, pois o ls tem
> <ENTER> no meio e quero preservá-los. Veja a continuação:
>
> $ echo "$var" # veja que a atribuição já esta pronta em $var
> a12b="crachafoto.sh
> cracha.yad
> Foto1.jpeg
> Foto.jpeg"
> $ eval "$var"   # este é o pulo do gato do shell
> $ echo "$a12b"  # Pronto. Acabou-se tudo.
> crachafoto.sh
> cracha.yad
> Foto1.jpeg
> Foto.jpeg
>
> Abcs,
> Julio
>
> *
> *
>
>
>
> Em 3 de junho de 2012 01:06, Fernando Mercês <address@hidden> escreveu:
>
>> **
>>
>>
>> Opa, creio não ser possível fazer o que você quer deste jeito. O que você
>> está tentando é declarar variáves com nomes variáveis e eu nunca vi isso em
>> nenhuma linguagem (não conheço muitas, nem sou nenhum programador de
>> verdade), mas enfim, eu acho que utilizar um array resolveria:
>>
>> for i in {2..5}; do
>> mpls[$i]="saida do comando $i"
>> done
>>
>> Aí você pode acessar ${mpls[2]}, ${mpls[3]} etc. O que acha?
>>
>> Abraço.
>>
>> Att,
>>
>> Fernando Mercês
>> Linux Registered User #432779
>> www.mentebinaria.com.br
>> ------------------------------------
>> "Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade
>> de mudança é preciso mudar". (Elliot Gould)
>>
>> On Sat, Jun 2, 2012 at 6:00 PM, edmundo_goncalves <
>> address@hidden> wrote:
>>
>> > **
>> >
>> >
>> > Olá pessoal!
>> >
>> > Não consigo guardar valor de saida de comando na variável, tentei de duas
>> > formas
>> >
>> > for i in `seq 2 5` ; do
>> > snmpwalk -v 1 -c public -Oqv 192.168.1.8 IF-MIB::ifInOctets."$i" >
>> > tmp/"$i"_down1
>> > snmpwalk -v 1 -c public -Oqv 192.168.1.8 IF-MIB::ifOutOctets."$i" >
>> > tmp/"$i"_up1
>> > mpls_"$i"_down1=`cat tmp/"$i"_down1`
>> > mpls_"$i"_up1=`cat tmp/"$i"_up1`
>> > done
>> >
>> > porem ao executar ele me mostra por exemplo: mpls_2_down1=2960014678:
>> > command not found
>> >
>> > segunda forma:
>> >
>> > for i in `seq 2 5` ; do
>> > mpls_"$i"_down1=$(snmpwalk -v 1 -c public -Oqv 192.168.1.8
>> > IF-MIB::ifInOctets."$i")
>> > mpls_"$i"_up1=$(snmpwalk -v 1 -c public -Oqv 192.168.1.8
>> > IF-MIB::ifOutOctets."$i")
>> > done
>> >
>> > porem ao executar ele me mostra por exemplo: mpls_2_down1=2960169411:
>> > command not found
>> >
>> > Obrigado a todos que poderem me ajudar!
>> >
>> >
>> >
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>
>
> [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

http://pacman.blog.br


reply via email to

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