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: Fernando Mercês
Subject: Re: [shell-script] Guardar valor de saida de comando em variavel
Date: Sun, 3 Jun 2012 10:26:17 -0300

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" <address@hidden> 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 <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
>
>
>


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



reply via email to

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