Validando valor dentro de IF com Expressão Regular em Shell

Pessoal, estava preparando aula sobre Expressão Regular e percebi que a maioria dos livros e materiais disponíveis na internet não falam como validar um valor digitado pelo usuário (comando read, por exemplo). Depois de muito fuçar, e pensar um pouco, acabei achando uma maneira de fazer isso.
Imagine que você queira validar a data de nascimento passado por um usuário ou evitar a entrada de dados em branco, para isso, poderá ser usado ER.

1) Verificar ausência de valor

1
2
3
4
5
6
7
8
9
#!/bin/bash
 
read -p "Escreva seu nome: " nome
 
if [[ '$nome' =~ ^$ ]]; then
    echo "nome inválido"
else
    echo "Nome digitado: $nome"
fi

2) Validar valor usando egreg dentro do if

1
2
3
4
5
6
7
8
9
#!/bin/bash
 
read -p "Data de nascimento: " data
 
if echo "$data" | egrep "^(0[0-9]|[12][0-9]|3[01])[-/.](0[1-9]|1[12])[-/.](19|20)[0-9][0-9]" >/dev/null; then
         echo 'Data Válida: $data'
else
        echo 'Data inválida: $data'
fi

Lembrando que o objetivo não é explicar ER.

Até a próxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *