ZC2002 - Undefined Variable
Descrição
Variável pode estar sendo usada antes de ser inicializada.
Exemplo Problemático
#!/bin/zsh
# Usando variável antes de atribuir
echo "O valor é: $undefined_var"
# Atribuição vem DEPOIS do uso
undefined_var="agora sim"
Ou variável que nunca é definida:
#!/bin/zsh
# Variável $API_KEY não existe no escopo
curl -H "Authorization: Bearer $API_KEY" https://api.example.com
Solução Correta
Inicialize a variável antes do uso:
#!/bin/zsh
# Inicialize primeiro
undefined_var="meu valor"
echo "O valor é: $undefined_var"
Ou verifique se existe:
#!/bin/zsh
# Verifique se a variável existe
if [[ -z "${API_KEY:-}" ]]; then
echo "Erro: API_KEY não configurada"
exit 1
fi
curl -H "Authorization: Bearer $API_KEY" https://api.example.com
Variáveis Ignoradas (Predefinidas)
O ZshCheck ignora automaticamente variáveis que geralmente são predefinidas pelo shell:
$HOME- Diretório home do usuário$PATH- Caminhos de busca de executáveis$USER- Nome do usuário atual$SHELL- Shell padrão$PWD- Diretório atual$OLDPWD- Diretório anterior- Variáveis começando com
_(convenção de privado)
Padrões Defensivos
Use valores padrão quando a variável pode não existir:
#!/bin/zsh
# Sintaxe ${var:-default}
config_file="${CONFIG_FILE:-/etc/default.conf}"
# Sintaxe ${var:=default} - também atribui o valor
log_level="${LOG_LEVEL:=info}"
# Sintaxe ${var:?message} - erro se não definido
api_key="${API_KEY:?API_KEY não configurada}"
Limitações
O check atualmente:
- Não rastreia fluxo de controle (não sabe se uma variável foi definida em um
ifanterior) - É conservador - pode reportar falso positivo para variáveis definidas em scripts chamados
- Não analisa
sourcedinâmico