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

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

Re: [shell-script] Expansão de variáveis


From: Julio C. Neves
Subject: Re: [shell-script] Expansão de variáveis
Date: Wed, 9 May 2012 12:17:27 -0300

Se o que vc quer é receber tudo, menos as 3 últimas posições, o melhor é
fazer a seguinte forma:

$ echo ${var:0:$((${#var}-3))}

Isso é bash puro e portanto muito mais rápido e eficiente.

Abcs,
Julio

*
*



Em 9 de maio de 2012 12:06, Petterson Faria
<address@hidden>escreveu:

> **
>
>
> Eu procurando? Não entendi. Não sou organizador :)
>
> Solução final para meu problema do "Tudo - 3":
>
> *${var:0:$(expr length $var - 3)}*
>
> --
> Atenciosamente,
> *Petterson Faria*
>
> *"A ciência nunca resolve um problema sem criar mais dez"
> (George Bernard Shaw*)
>
> 2012/5/9 Julio C. Neves <address@hidden>
>
> > Em 9 de maio de 2012 11:49, Petterson Faria
> > <address@hidden>escreveu:
> >
> > > **
> > >
> > >
> > > Humm, isso mesmo. Valeu Júlio!
> > > Lembro que tinha esse lance do () eu até cheguei a tentar
> $(($var:0:3)),
> > > que nem a gente faz com $((1+1)) hehehe
> > > Show!
> > > Muito obrigado pela explicação.
> > > Estaremos no FSLDC palestrando novamente?
> > >
> > Como palestrante, não sei, pois vc está procurando novos valores aqui
> nessa
> > lista ;), mas claro que estaremos lá, nem que seja como ouvinte.
> >
> > O FSLDC é ótimo!
> >
> > Abcs,
> > Julio
> >
> > *
> > *
> >
> >
> >
> > >
> > > --
> > > Atenciosamente,
> > > *Petterson Faria*
> > >
> > > *"A ciência nunca resolve um problema sem criar mais dez"
> > > (George Bernard Shaw*)
> > >
> > > 2012/5/9 Julio C. Neves <address@hidden>
> > >
> > > > Fala Petterson,
> > > > Isso é um pouco chato de entender, mas vamulá:
> > > >
> > > > » Essa expansão de parâmetro só funciona com Bash 4.0 ou mais
> recente;
> > > > » Existe uma expansão de parâmetro com sintaxe semelhante.
> Experimente
> > > > fazer:
> > > > $ read -p "Usuário ($LOGNAME): "; echo o usuário escolhido foi
> > > > ${REPLY:-$LOGNAME)
> > > > e entre com seu nome e depois entre com vazio, que vc entenderá sua
> > > > finalidade;
> > > > » Essa expansão de parâmetro que vc está usando, serve para cortar de
> > trá
> > > > para frente, então a origem sempre será zero e, por isso, não se deve
> > > > informá-la;
> > > > » Vamos ver como proceder:
> > > > $ var=0123456789
> > > > $ echo ${var:0:-3}
> > > > bash: -3: expressão de substring < 0
> > > > # ZEBRA! Isso foi gerado pelo zero da origem. Vamos tirá-lo:
> > > > $ echo ${var:-3}
> > > > 0123456789
> > > > # ZEBRA! Isso foi pq o Bash acho que vc queria fazer
> > > > #+ a outra expansão de parâmetro (a para pegar valores
> > > > #+ default que te mostrei).
> > > > # Então vamos ver como deve ser:
> > > > $ echo ${var: -3}
> > > > 789
> > > > $ echo ${var:(-3)}
> > > > 789
> > > >
> > > > Abcs,
> > > > Julio
> > > >
> > > > *
> > > > *
> > > >
> > > >
> > > >
> > > > Em 9 de maio de 2012 11:07, Petterson Faria
> > > > <address@hidden>escreveu:
> > > >
> > > > > **
> > > > >
> > > > >
> > > > > Bom dia.
> > > > >
> > > > > Testei agora o retorno de *${PWD:0:-3}* para imprimir a variável
> > > *MENOS*
> > > > os
> > > > > 3 ultimos caracteres e não deu certo.
> > > > > Estranho porque eu tenho 98% de certeza que eu usava isso em outros
> > > > > scripts.
> > > > >
> > > > > Alguém sabe dizer porquê? Ou como seria a forma correta?
> > > > >
> > > > > bash --version
> > > > > GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
> > > > >
> > > > > --
> > > > > Atenciosamente,
> > > > > *Petterson Faria*
> > > > >
> > > > > *"A ciência nunca resolve um problema sem criar mais dez"
> > > > > (George Bernard Shaw*)
> > > > >
> > > > > [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
> > > >
> > > >
> > > >
> > >
> > > [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
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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