Pular para o conteúdo

Validar opção do case [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Validar opção do case [RESOLVIDO]

Enviado em 13/02/2017 - 13:20h

Como faço para validar uma opção do case, estou querendo validar se o que o usuario digitou no campo read é um ip.

exemplo:

read myip

case $myip in
([0-999]).([0-999]).([0-999]).([0-999]))echo "$myip é um ip"
;;
*)echo "digite seu ip corretamente"
;;
esac
Tentei assim e recebo erro de sintaxe.

Responder tópico

2. Re: Validar opção do case [RESOLVIDO]

Melhor resposta

Enviado em 13/02/2017 - 13:46h

yuttttttt escreveu:

Como faço para validar uma opção do case, estou querendo validar se o que o usuario digitou no campo read é um ip.

exemplo:

read myip

case $myip in
([0-999]).([0-999]).([0-999]).([0-999]))echo "$myip é um ip"
;;
*)echo "digite seu ip corretamente"
;;
esac

Tentei assim e recebo erro de sintaxe.
Boa tarde.
A REGEX para validar o IP, é:
'([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 
Portanto:
[[ "$myip" =~ ^([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo -e "\n $myip é um IP VáLIDO" || echo -e "\n $myip é INVáLIDO"

Att.:
marcelo oliver

3. Re: Validar opção do case

Enviado em 13/02/2017 - 18:00h

msoliver escreveu:

yuttttttt escreveu:

Como faço para validar uma opção do case, estou querendo validar se o que o usuario digitou no campo read é um ip.

exemplo:

read myip

case $myip in
([0-999]).([0-999]).([0-999]).([0-999]))echo "$myip é um ip"
;;
*)echo "digite seu ip corretamente"
;;
esac

Tentei assim e recebo erro de sintaxe.
Boa tarde.
A REGEX para validar o IP, é:
'([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 
Portanto:
[[ "$myip" =~ ^([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo -e "\n $myip é um IP VáLIDO" || echo -e "\n $myip é INVáLIDO"

Att.:
marcelo oliver


to tentando entende-lo, mas está dificil kkkk porque preciso adicionar a porta que esqueci de mencionar, tipo 138.158.102.145:8080, mas não to conseguindo, não consigo entender o padrão desse REGEX.

Daria para fazer assim, acho mais simples, mas agora entendi o jeito que você kkkkk você quer validar dentro do padrão ip, pdc, vou usar assim

if [[ "$var" =~ ^([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\:([0-9]{5,}|[0-9]{4,}|[0-9]{3,}|[0-9]{2,}|[0-9]{1,})$ ]];then
echo "valido"
fi

4. Re: Validar opção do case [RESOLVIDO]

Enviado em 13/02/2017 - 23:04h

yuttttttt escreveu:

msoliver escreveu:

yuttttttt escreveu:

Como faço para validar uma opção do case, estou querendo validar se o que o usuario digitou no campo read é um ip.

exemplo:

read myip

case $myip in
([0-999]).([0-999]).([0-999]).([0-999]))echo "$myip é um ip"
;;
*)echo "digite seu ip corretamente"
;;
esac

Tentei assim e recebo erro de sintaxe.
Boa tarde.
A REGEX para validar o IP, é:
'([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 
Portanto:
[[ "$myip" =~ ^([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo -e "\n $myip é um IP VáLIDO" || echo -e "\n $myip é INVáLIDO"

Att.:
marcelo oliver


to tentando entende-lo, mas está dificil kkkk porque preciso adicionar a porta que esqueci de mencionar, tipo 138.158.102.145:8080, mas não to conseguindo, não consigo entender o padrão desse REGEX.

Daria para fazer assim, acho mais simples, mas agora entendi o jeito que você kkkkk você quer validar dentro do padrão ip, pdc, vou usar assim

if [[ "$var" =~ ^([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\:([0-9]{5,}|[0-9]{4,}|[0-9]{3,}|[0-9]{2,}|[0-9]{1,})$ ]];then
echo "valido"
fi


Boa noite.
Pode ser com o "if",
A sintaxe que usei, é um "modo reduzido" do "if".
Quanto a porta, é só inclui-la no final da REGEX:

[[ "$myip" =~ ^([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5]):8080$ ]] && echo -e "\n $myip é um IP VáLIDO" || echo -e "\n $myip é INVáLIDO"
SIMPLIFICANDO a REGEX:
^(([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ 
Marcelo Oliver

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder