verifica se a entrada corresponde ao formato ip? [duplicado]

1

É assim que eu tento fazer isso.

read -p "enter ip " ip 
if [[ $ip =~ ^[1-255].[1-255].[1-255].[1-255]$ ]]; then echo "good"; fi

Funciona somente se a entrada for 1.1.1.1

    
por saad 25.06.2018 / 12:24

1 resposta

2

[1-255] significa 1 ou 2 ou 5, não corresponderá de 1 a 255

use isso, aqui estou contando ocorrências

echo $ip | egrep -o '^([0-9]{1,3}\.){3}[0-9]{1,3}$'

[0-9]{1,3}\. significa que o dígito 0-9 pode ser exibido três vezes seguido por ponto

([0-9]{1,3}\.){1,3} significa que o padrão acima tem que ser três vezes

e sim, ele irá combinar IPs incorretos também.

    
por 25.06.2018 / 12:36