1
resposta

Dúvida na sintaxe do teste com "if []"

Não ficou claro no código abaixo, a real necessidade de abertura de duas estruturas de colchetes na linha "06".

01-    #!/bin/bash
02-    ip=$1
03-    DIR=~/Capacitação/Shell-Script/Parte-2/Exercicios/apache-log
04-    regex="\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
05-    cd $DIR
06-    if [[ $ip =~ $regex ]]
07-    then
08-           cat apache.log | grep $1
09-        if [ $? -ne 0 ]
10-            then
11-                echo "O endereco IP procurado nao esta presente no arquivo"
12               fi
13-       else
14-               echo "Formato não é válido"
15-        fi
1 resposta

A expressão =~ seria utilizada para comparação de um valor com uma expressão regular, essa expressão (=~) deve ser usada com colchetes duplos [[ ]] que representa uma condição de testes extendidas, estou colocando a documentação abaixo para mais detalhes sobre o =~:

http://tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF