Validar o CPF manualmente é uma tarefa propensa a erros e demorada. Com um script Bash, você automatiza completamente o processo, garantindo precisão e rapidez ao verificar os dígitos verificadores diretamente na linha de comando.
O script a seguir implementa o algoritmo padrão de validação de CPF, removendo caracteres não numéricos e calculando os dois dígitos verificadores. Salve-o em um arquivo, por exemplo, valida_cpf.sh.
#!/bin/bash
# Função para validar CPF
valida_cpf() {
local cpf=$1
# Remove caracteres não numéricos
cpf=$(echo "$cpf" | tr -d '[:punct:]' | tr -d '[:space:]')
# Verifica se tem 11 dígitos e não são todos iguais
if [[ ${#cpf} -ne 11 || "$cpf" =~ ^(0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11})$ ]]; then
echo "CPF inválido: formato incorreto ou dígitos repetidos."
return 1
fi
# Extrai os 9 primeiros dígitos
local digitos=${cpf:0:9}
# Calcula o primeiro dígito verificador
local soma=0
local i
for ((i=0; i<9; i++)); do
soma=$((soma + ${digitos:i:1} * (10 - i)))
done
local resto=$((soma % 11))
local dv1=$((resto < 2 ? 0 : 11 - resto))
# Calcula o segundo dígito verificador
digitos="${digitos}${dv1}"
soma=0
for ((i=0; i<10; i++)); do
soma=$((soma + ${digitos:i:1} * (11 - i)))
done
resto=$((soma % 11))
local dv2=$((resto < 2 ? 0 : 11 - resto))
# Compara com os dígitos verificadores do CPF informado
if [[ $dv1 -eq ${cpf:9:1} && $dv2 -eq ${cpf:10:1} ]]; then
echo "CPF válido: $cpf"
return 0
else
echo "CPF inválido: dígitos verificadores incorretos."
return 1
fi
}
# Exemplo de uso
if [[ $# -eq 0 ]]; then
echo "Uso: $0 "
exit 1
fi
valida_cpf "$1"
| CPF de Entrada | Saída Esperada |
|---|---|
| 529.982.247-25 | CPF válido: 52998224725 |
| 123.456.789-00 | CPF inválido: dígitos verificadores incorretos. |
| 111.111.111-11 | CPF inválido: formato incorreto ou dígitos repetidos. |
Para executar o script, siga estes passos:
valida_cpf.sh.chmod +x valida_cpf.sh../valida_cpf.sh 529.982.247-25.Com este script Bash, você automatiza a validação de CPF em segundos, eliminando erros manuais e garantindo que apenas CPFs com dígitos verificadores corretos sejam aceitos. É uma solução rápida, confiável e perfeita para processamento em lote ou integração em sistemas maiores.