Automação no Shell: Como Verificar se Arquivos e Diretórios Existem Usando if no Bash
A validação da existência de arquivos e diretórios é uma etapa fundamental antes de ler, gravar ou executar tarefas de automação em scripts Shell. Utilizar o comando if junto com os operadores de teste nativos do Bash evita erros em tempo de execução e impede que comandos sejam aplicados em caminhos inexistentes ou inválidos.
Bash
#!/bin/bash
# Script para verificação de existência e tipo de caminhos no sistema
CAMINHO_ARQUIVO="/etc/hosts"
CAMINHO_DIR="/var/log"
# 1. Checa se o arquivo existe e é um arquivo comum (-f)
if [ -f "$CAMINHO_ARQUIVO" ]; then
echo "[OK] O arquivo $CAMINHO_ARQUIVO foi encontrado."
else
echo "[ERRO] O arquivo $CAMINHO_ARQUIVO nao existe."
fi
# 2. Checa se o diretório existe (-d)
if [ -d "$CAMINHO_DIR" ]; then
echo "[OK] O diretorio $CAMINHO_DIR esta acessivel."
fi
# 3. Exemplo prático: validação antes de criar uma pasta
NOVO_DIR="./dados_app"
if [ ! -d "$NOVO_DIR" ]; then
mkdir -p "$NOVO_DIR"
echo "Diretorio $NOVO_DIR criado com sucesso!"
fi
Exemplo de uso e execução no terminal:
Bash
# Conceda permissão e execute o script
chmod +x verifica_caminho.sh
./verifica_caminho.sh
Pontos-chave
- Operador
-fvs-e: O operador-fretorna verdadeiro apenas se o caminho for um arquivo comum; para testar a existência genérica de qualquer item (incluindo links, diretórios e sockets), utilize-e. - Verificação de Diretórios (
-d): Garante que o alvo é uma pasta antes de tentar operações como navegação (cd) ou listagem (ls). - Operador de Negação (
!): Inverte a lógica da condição (ex:if [ ! -d "pasta" ]), permitindo executar comandos quando um elemento não for encontrado. - Aspas Duplas Obrigatórias: Sempre envolva as variáveis em aspas dentro do teste (ex:
"$CAMINHO"), prevenindo erros de sintaxe caso a string contenha espaços em branco. - Checagem de Permissões Adicionais: É possível combinar verificações com outros flags úteis, como
-r(permissão de leitura),-w(permissão de escrita) e-x(permissão de execução).
