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.
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"
Após criar o arquivo, torne-o executável com o comando:
chmod +x valida_cpf.sh
Para validar um CPF, execute o script passando o CPF como argumento:
./valida_cpf.sh 123.456.789-09
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. |
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.