Shell + Contem + Or [RESOLVIDO]

1. Shell + Contem + Or [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 25/11/2011 - 16:57h

Srs, boa tarde.

Preciso fazer uma verificação dentro de um if que:

Caso tenha o numero 100, ele deve sair do scpript. Porem nao somente o 100, mas o 200 e o 300.

Entao, para a verificação do 100, eu fiz assim:

if [[ $1 == 100.* ]] ; then
exit 0

Agora, como fazer para verificar se possui o 200 e o 300?

Eu estava usando o -o mas nao nao consegui fazer funcionar, talvez minha sintaxe nao esteja correta, ou nao tem como verificar tudo numa vez soh..

if [[ $1 == 100.* ] -o [ $1 == 200.* ] -o [ $1 == 300.* ]] ; then
exit 0

if [[ $1 == 100.* ]] -o [[ $1 == 200.* ]] -o [[ $1 == 300.* ]] ; then
exit 0

ateh tentei assim:

if [[ $1 == 100.* -o 200 -o 300 ] ; then
exit 0

mas sem sucesso

bom, se o cara passar no parametro 1 o numero 100 ou 200 ou 300, deve sair:

script.sh 100.40.200.50 = sai do script
script.sh 500.100.200.300 = NAO sai do script

Será que alguem sabe como me ajudar?

obrigado

Diego


  


2. Re: Shell + Contem + Or [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 25/11/2011 - 17:40h

Talvez isso lhe ajude:


if [[ "$1" =~ [123]00 ]]; then
echo "Tem o 100, 200 ou 300"
else
echo "Não tem o 100, 200 ou 300"
fi



3. Re: Shell + Contem + Or [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 25/11/2011 - 18:11h

oi eldermarco, obrigado pela ajuda..

agora deixa eu trazer para a minha realidade...vamos dizer, que ao inves do 100, 200 e 300 os numeros sejam:

172.
10.0.
192.168.

Alguma ideia de como fazer?

Vlw, abs



4. Re: Shell + Contem + Or [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/11/2011 - 18:29h

Dar pra fazer com expressão regular, o egrep:


#!/bin/bash
if egrep '172|10\.0\.|192\.168\.' <<< "$1"
then
echo "Tem o 172, 10.0. ou 192.168."
else
echo "Não tem o 172, 10.0. ou 192.168."
fi




5. Re: Shell + Contem + Or [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 25/11/2011 - 19:20h

Oi rai3mb

Fiz um ajuste, para ele verificar o inicio... colocando o ^ veja:

#!/bin/bash

if egrep '^172|^10\.0\.|^192\.168\.' <<< "$1" ; then
echo "Tem o 172, 10.0. ou 192.168."
else
echo "Nao tem o 172, 10.0. ou 192.168."
fi


Porem to recebendo erro:
script.sh: 3: Syntax error: redirection unexpected

se jogo o $1 para dentro de um arquivo e faço assim:
if egrep '^172|^10\.0\.|^192\.168\.' $arquivo ; then

Funciona, mas eu nao queria jogar isso para um arquivo para depois tratar..

tentei usando << e tmb < e nao vai tmb..

Vlw




6. Re: Shell + Contem + Or [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/11/2011 - 19:46h

Comigo deu certo ;-)

Mas faça assim então:


#!/bin/bash
# coloque um echo e use um pipe '|' para passar a saída para o egrep
if echo "$1" | egrep '^172|^10\.0\.|^192\.168\.'
then
echo "Tem o 100, 200 ou 300"
else
echo "Não tem o 100, 200 ou 300"
fi



7. Re: Shell + Contem + Or [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 25/11/2011 - 19:59h

rai3mb, deu certo kra, perfeito.

O que ajustei, foi colocar o -q no egrep:
if echo "$1" | egrep -q '^172|^10\.0\.|^192\.168\.'

ai ele nao mostra em tela o $1 caso entre na condição.

realmente nao me lembrei de tentar com o echo

Muito obrigado.

Um abraço

Diego








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts