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: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] Expansão de variáveis
Date: Thu, 10 May 2012 09:44:31 -0300

Eu só não entendi por que o que deu problema para alguns funcionou para
mim...

$ var=0123456789
$ echo ${var:0:-3}
0123456

ou mesmo
$ echo ${PWD:0:-3}
/home/thun

O que será que meu bash tem para não dar o tal erro "bash: -3: expressão de
substring < 0" ??
$ bash --version
GNU bash, versão 4.2.24(1)-release (i686-pc-linux-gnu)

See ya
Alysson Gonçalves de Azevedo
(11) 8491-7730




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

> **
>
>
> BOA!
> Tenho que assistir muita palestra ainda ;)
>
>
> --
> 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>
>
> > 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]
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > 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]