← RHCSA: administração RHEL 10 em produção
01 / 10 · 32 MIN

Ferramentas, argumentos e scripts fiáveis

Interpreta redireções, links e argumentos antes de automatizar uma operação.

Conceito e mecanismo

O shell transforma uma linha em argumentos e redireções antes de executar o programa. Em Bash, a ordem importa: comando >saida.log 2>&1 associa primeiro stdout ao ficheiro e depois copia esse destino para stderr. Inverter a ordem pode deixar os erros no terminal. Em loops, "$@" preserva cada argumento recebido; "$*" combina os argumentos numa única expansão entre aspas. Guarda ou avalia o estado do comando imediatamente, porque um echo posterior também altera $?. Para filtrar logs, uma âncora de início e um separador distinguem ERROR seguido de espaço de ocorrências dentro de outra mensagem.

Aplicação guiada

Num batch financeiro, a existência de um ficheiro de saída não prova que o processamento terminou. Se o comando falhar, conserva evidência e reconcilia efeitos antes de repetir. Verifica também links: um hard link é outro nome para o mesmo objeto; remover um nome não elimina o conteúdo enquanto persistem referências relevantes. Um symlink relativo resolve o destino a partir do diretório onde o link reside, não do diretório atual do operador. Quando um glob não encontra ficheiros, Bash pode conservar o padrão literal se nullglob e failglob estiverem desativados. Explicita estas condições no script e no ensaio.

NA PRÁTICA

Se /srv/app/current aponta para releases/v2, o destino relativo começa em /srv/app. Ensaiar o script com um path que contém espaços revela falhas de quoting antes da janela.

Armadilhas comuns

Ler $? demasiado tarde; dividir paths; trocar ordem de redireções; resolver symlinks a partir da sessão do operador.

Tópicos relacionados: Software, repositórios RPM e Flatpak · Operação, targets e evidência persistente

Leva esta ideia contigo

Valida os argumentos efetivos, os destinos de saída e o resultado de cada operação.

Criar conta

Referência: bash(1): shell expansion and pipelines · EX200 based on Red Hat Enterprise Linux 10

Red Hat® e RHCSA são marcas comerciais ou marcas registadas de Red Hat, Inc. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por Red Hat. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.