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

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

Re: [shell-script] Re: Procurar string dentro de outra string (substring


From: Tiago Peczenyj
Subject: Re: [shell-script] Re: Procurar string dentro de outra string (substring)
Date: Mon, 26 Nov 2012 01:59:19 -0200

no bash é uma forma de simplificar as coisas, veja

bash$ echo "mensagem" | tr -d m
ensage

bash$ tr -d m < <(echo "mensagem")
ensage

o tr espera ler da entrada padrão (a STDIN). eis duas formas de enviar o
texto "mensagem" ou o conteudo de uma variavel via echo, seja por pipe ou
uma construição mais "complexa" envolvendo <( )

bash$ tr -d m <<< mensagem
ensage

tem uma vantagem sobre a primeira versão (com echo + pipe |) alem da
simplicidade é que vc pode facilmente detectar se houve um erro checando
apenas a variavel $? (ou colocando && ou || para processar). exemplo

comando && echo sucesso || echo falha

se vc tem no lugar do comando algo como

comando1 | comando3 | comando3

a variavel $? vai se referir ao ultimo comando e não a cadeia toda. a
cadeia toda vc analisa no array PIPESTATUS e é um tanto chato.

o mecanismo de retornar um numero ao sistema operacional é interessante
pois a convenção é usar 0 para saida normal e numeros positivos para erros.
veja o man curl no que diz respeito aos codigos de erro la no final.

os programas (em um shell script) falham de forma silenciosa. vc só
interrompe o fluxo de um shell script se assim vc desejar. por exemplo o
seu script precisa fazer 3 coisas e a coisa do meio "deu erro", a chance é
que isso seja uma falha silenciosa (mesmo q grite em vermelho no STDERR) e
o script continue.

vejamos numa função:

bash$ function xxx() { rm /a ; echo  ops ; }
bash$ xxx
rm: /a: No such file or directory
ops

o arquivo /a não existe, se vc substituir on echo por "ops $?" vai ver o
valor 1. se vc espera remover algo tem que verificar se o rm executou
corretamente. por isto vc pode fazer coisas como

if rm /path/to/file ; then
  echo "apagou"
else
  echo "ops... "
fi

funcionam, o if entende o retorno do /bin/rm ao sistema operacional.

pra quem ja viu C é o retorno da função main (quando não é uma chamada da
função exit(VALOR))

2012/11/26 Anderson Junior <address@hidden>

> **
>
>
> ainda to tentando entender... pra que serve esses tres menor que <<<
>
> --- Em address@hidden, Alysson Gonçalves de Azevedo
> <agalysson@...> escreveu
>
> >
> > Sugestão para estudo
> >
> > if [[ `grep -q "$1" <<< "$2"` ]]
> > then...
> >
> >
> >
> > Alysson Gonçalves de Azevedo - (11) 984 917 730
> >
> > "É curioso como as pessoas ficam confusas quando a frase não terminam do
> > jeito que elas periquito."
> >
> >
> >
> > Em 26 de novembro de 2012 00:05, Valtoir <valtoirjardim@...> escreveu:
>
> >
> > > É uma boa solução, se tiveres somente dois parâmetros. Imaginei que
> poderia
> > > ser algo tipo:
> > >
> > > script.sh and anderson amanda etc
> > >
> > > Valtoir
> > >
> > >
> > > Em 25 de novembro de 2012 23:41, Anderson Junior <
> > > andersonscinfo@...> escreveu:
>
> > >
> > > > **
> > > >
> > > >
> > > > concegui...agradeço a ajuda de vcs, deixo como resolvido....fiz dessa
> > > > forma....não é a melhor, mas de imediato para oque eu preciso deu
> > > certo...
> > > >
> > > > #!/bin/bash
> > > >
> > > > echo $2 | grep $1 > /dev/null
> > > > if [ $? = 0 ]; then
> > > > echo "$1 esta contida dentro de $2"
> > > > else
> > > > echo "sem referencias"
> > > > fi
> > > >
> > > > --- Em address@hidden, "Anderson Junior"
> > > <andersonscinfo@>
> > > > escreveu
> > > >
> > > > >
> > > > > boa noite galera, este é meu primeiro posto na lista, é algo bem
> > > > simples, mas pra mim que estou começando não parece ser simples...
> > > > >
> > > > > eu preciso procurar por determinado trecho de string dentro de
> outras
> > > > strings, usando um if, tipo
> > > > >
> > > > > strings
> > > > >
> > > > > anderson
> > > > > amanda
> > > > >
> > > > > ai preciso verificar se nessas duas strings tem a string "and", ai
> > > > queria tratar isso com um if...pois é....é simples, mas não dou
> conta....
> > > > >
> > > > > obrigado....
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > [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]
> >
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


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



reply via email to

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