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

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

Re: [shell-script-pt] ER no if


From: Alfredo Casanova
Subject: Re: [shell-script-pt] ER no if
Date: Tue, 12 May 2020 15:07:42 -0300

Marcelo, suas expressões regulares estão MUITO erradas.

O que vai entre colchetes é uma lista de caracteres, não um range numérico. Se você coloca [192-255], sua expressao regular vai entender "1 ou 9 ou (de 2 até 2) ou 5 ou 5". 
Exemplo:
[0-9] significa 0 a 9
[0-3] significa 0 a 3.

pra fazer 192 a 255, vc teria q fazer +- o seguinte:

(19[2-9]|2[0-4][0-9]|25[0-5])

o | é um OU lógico.

Delimitando entre parenteses, vc está dizendo que quer um daqueles três blocos:
19[2-9] = numero 1 e numero 9 (19) seguido de qualquer numero entre 2 e 9 (192 a 199)
2[0-4][0-9] = numero 2 seguido de qualquer numero de 0 a 4 (vai aceitar 20, 21, 22, 23 e 24) seguido de qualquer numero de 0 a 9 (logo, de 200 a 249)
25[0-5] = caractere 2 e caractere 5 (25) seguido de qualquer numero entre 0 e 5 (250 a 255)

Recomendo que você dê uma estudada melhor em expressões regulares antes de seguir no seu script!


On Tue, May 12, 2020 at 2:50 PM Marcelo Primo por (shell-script-pt) <address@hidden> wrote:
Boa tarde a todos,

Estou implementando um loop simples em um script para facilitar algumas rotinas de trabalho, no entanto estou enfrentando uns problemas e já não sei onde mais atacar para que o resultado seja o esperado.

Segue o código do script:

#!/bin/bash

while read hosts
do
    
    if [[ "$hosts" =~ 192\.168\.20[0-3]\.[1-254] || "$hosts" =~ 192\.168\.70\.[192-255] ||\
     "$hosts" =~ 172\.8\.96\.[128-255] || "$hosts" =~ 172\.220\.1\.[128-255] ]];
    then
        echo "$hosts"
        echo "reservado"
    else

        echo "$hosts"
        echo "IP válido"
    fi
  
done < ips

O arquivo ips contém:
192.168.200.200
192.168.201.201
192.168.202.202
192.168.203.203
172.8.96.129
172.8.96.130
172.220.1.197
192.168.70.200

Saída:
192.168.200.200
reservado
192.168.201.201
reservado
192.168.202.202
reservado
192.168.203.203
reservado
172.8.96.129
IP válido
172.8.96.130
IP válido
172.220.1.197
IP válido
192.168.70.200
reservado

Aparentemente, o que era para ser uma coisa simples, está me fazendo perder os poucos cabelos que me restam. 

Alguma sugestão?


_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: address@hidden
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
[]'s
Alfredo Tristão Casanova .͘.
Linux User #228230
tel: +55 61 9655 9619

reply via email to

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