Bash Scripting

Bash Scripting

Tratamento de erros

set

O comando set -e no Bash é usado para alterar o comportamento do shell em relação à execução de scripts. Quando você inclui set -e no início de um script, ele faz com que o shell saia imediatamente se qualquer comando no script retornar um status de saída diferente de zero (ou seja, se algum comando falhar).

#!/bin/bash

set -e

O comando set -x no Bash é uma ferramenta útil para depuração de scripts. Quando você ativa o set -x, o Bash começa a exibir cada comando executado no script, junto com seus argumentos, antes de executá-los. Isso facilita a identificação de problemas, pois você pode ver exatamente o que está sendo executado e em que ordem.

#!/bin/bash

set -x

trap

O comando trap no Bash é usado para capturar sinais e executar comandos ou funções específicas quando esses sinais são recebidos. Isso é útil para garantir que um script faça uma limpeza adequada ou execute ações específicas antes de ser interrompido, por exemplo, ao receber um sinal de interrupção (como SIGINT, que é gerado quando você pressiona Ctrl+C).

#!/bin/bash

trap 'echo "Error on line $LINENO"; exit 1' ERR

Para mais exemplos e explicação mais detalhada acesse a página.

Arrays associativos

Arrays associativos são pares chave-valor no Bash, disponíveis a partir do Bash 4. Elas permitem pesquisas e organização de dados eficientes.

declare -A servers

servers=( ["web"]="192.168.1.10" ["db"]="192.168.1.20" ["cache"]="192.168.1.30" )

echo "Web server IP: ${servers[web]}"

for key in "${!servers[@]}"; do
    echo "$key -> ${servers[$key]}"
done

Heredocs para entrada multi-linha

email_body=$(cat <<EOF
Hello Team,

This is a reminder for the upcoming deployment at midnight.

Regards,
DevOps
EOF)

echo "$email_body" | mail -s "Deployment Reminder" team@example.com

Subshells

Um subshell é um processo filho no qual comandos podem ser executados sem afetar o shell pai.

Exemplo: Suponha que você queira alterar diretórios temporariamente e executar comandos:

(current_dir=$(pwd)
cd /tmp
echo "Now in $(pwd)"
)
echo "Back in $current_dir"

Named Pipes (FIFOs)

Pipes nomeados (ou FIFOs) são arquivos especiais que facilitam a comunicação entre processos, agindo como um buffer entre comandos.

mkfifo my_pipe

echo "Hello from process 1" > my_pipe

cat < my_pipe

rm my_pipe

Referências

Última modificação