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

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

Re: Guardar valor de saida de comando em variavel


From: mrgraucio
Subject: Re: Guardar valor de saida de comando em variavel
Date: Sun, 03 Jun 2012 13:43:48 -0000
User-agent: eGroups-EW/0.82

Provavelmente sua dúvida já foi sanada, mas quando li eu vi que eu já precisei 
dessas coisas e as pessoas sempre me deram alternativas.

Se você usar o export antes da variável dá certo, acho que está respondida a 
sua dúvida.

Mas como dito antes, o uso de vetores é mais organizado e facilita a manutenção 
do script.

Até!

--- Em address@hidden, Fernando Mercês <nandu88@...> escreveu
>
> Juliao, eu suspeitei do eval, mas preferi não me meter onde não sabia. :)
> 
> Legal a dica, mas concordo que enrola a guerra mesmo. Espero nunca precisar
> hehe. Enfim, o bash continua surpreendendo.
> 
> Abraço.
> Em 03/06/2012 10:22, "Julio C. Neves" <julio.neves@...> escreveu:
> 
> > 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 <tiago.peczenyj@...
> > >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 <julio.neves@...>:
> > > > 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 <nandu88@...>
> > > 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 <
> > > >> edmundo_goncalves@...> 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
> >
> >
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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