Validar opção do case [RESOLVIDO]

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

yuttttttt
yuttttttt

(usa Outra)

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.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

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

yuttttttt
yuttttttt

(usa Outra)

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]

Marcelo Oliver
msoliver

(usa Debian)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts