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 10:24:21 -0300

Claro Julio, eu entendi.

Eu só fico na duvida de qual seria a melhor situação para não usar
vetores. algum one-liner sadado?

2012/6/3 Julio C. Neves <address@hidden>:
> Fala Tiago,
> Como eu disse no meu pitaco anterior, creio que a solução por vetores
> proposta pelo Fernando seja melhor que a minha, mas dei aquele pitaco pq o
> nosso amigo Fernando, insinuou que não dava para fazer em Shell. Como uma
> das frases que mais uso é:
>
> - "Nunca pergunte se dá para fazer em Shell. A pergunta correta é: qual é a
> melhor forma de fazer em Shell."
>
> Decidi mostrar para a lista que dá para fazer em Shell, graças ao eval, que
> foi usado pela 1a. vez no ksh e incorporado a diversas linguagens como o C
> e até o Java (argh).
>
> Por outro lado, poucos sabem que o eval é um intrínseco (buitin) e por isso
> seu tempo de execução não compromete o desempenho.
>
> Abcs,
> Julio
>
> *
> *
>
>
>
> Em 3 de junho de 2012 09:59, Tiago Peczenyj <address@hidden>escreveu:
>
>> **
>>
>>
>> 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
>>
>>
>
>
> [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]