ragfica.pages.dev

Como validar CPF em Shell Script Bash?

Validar um CPF (Cadastro de Pessoas Físicas) em Shell Script Bash pode parecer complexo, mas com o algoritmo correto e um script bem estruturado, você pode automatizar essa tarefa de forma eficiente e confiável. Este método é o mais eficaz porque utiliza a lógica matemática oficial do CPF, garantindo que apenas números válidos sejam aceitos.

Pré-requisitos

Passo 1: Criar o script de validação

Crie um arquivo chamado valida_cpf.sh e adicione o código abaixo. Este script recebe um CPF como argumento, remove caracteres não numéricos e aplica o algoritmo de validação dos dígitos verificadores.

#!/bin/bash

# Função para validar CPF
validar_cpf() {
    local cpf=$1
    # Remover caracteres não numéricos
    cpf=$(echo "$cpf" | tr -d '[:punct:]' | tr -d '[:space:]')

    # Verificar se o CPF tem 11 dígitos
    if [[ ${#cpf} -ne 11 ]]; then
        echo "CPF inválido: deve ter 11 dígitos."
        return 1
    fi

    # Verificar se todos os dígitos são iguais
    if [[ "$cpf" =~ ^(.)\1*$ ]]; then
        echo "CPF inválido: dígitos repetidos."
        return 1
    fi

    # Calcular o primeiro dígito verificador
    local soma=0
    for i in {10..2}; do
        soma=$((soma + ${cpf:10-$i:1} * i))
    done
    local resto=$((soma % 11))
    local dv1=$((resto < 2 ? 0 : 11 - resto))

    # Calcular o segundo dígito verificador
    soma=0
    for i in {11..2}; do
        soma=$((soma + ${cpf:11-$i:1} * i))
    done
    soma=$((soma + dv1 * 2))
    resto=$((soma % 11))
    local dv2=$((resto < 2 ? 0 : 11 - resto))

    # Comparar os dígitos verificadores calculados com os informados
    if [[ ${cpf:9:1} -eq $dv1 && ${cpf:10:1} -eq $dv2 ]]; then
        echo "CPF válido: $cpf"
        return 0
    else
        echo "CPF inválido: dígitos verificadores incorretos."
        return 1
    fi
}

# Verificar se um CPF foi fornecido como argumento
if [[ $# -eq 0 ]]; then
    echo "Uso: $0 "
    exit 1
fi

# Validar o CPF fornecido
validar_cpf "$1"

Passo 2: Tornar o script executável

Após criar o arquivo, torne-o executável com o comando:

chmod +x valida_cpf.sh

Passo 3: Executar o script

Para validar um CPF, execute o script passando o CPF como argumento:

./valida_cpf.sh 123.456.789-09

Exemplo Prático

Veja abaixo exemplos de CPFs e a saída esperada do script:

CPF de Entrada Saída Esperada
123.456.789-09 CPF inválido: dígitos verificadores incorretos.
529.982.247-25 CPF válido: 52998224725
111.111.111-11 CPF inválido: dígitos repetidos.
529.982.247 CPF inválido: deve ter 11 dígitos.

Conclusão

Com este script Bash, você automatiza a validação de CPFs em segundos, evitando erros manuais e garantindo que apenas números válidos sejam aceitos. A lógica implementada segue rigorosamente o algoritmo oficial, tornando-o uma solução confiável para qualquer sistema que necessite dessa validação.