kb.erickguedes.com
Linux Básico: Do Terminal ao Sysadmin

Shell Scripting Introdutório

Aula 8 de 8

Primeiro Script

#!/bin/bash
# Meu primeiro script

echo "Olá, mundo!"
echo "Data: $(date)"
echo "Usuário: $USER"
chmod +x script.sh
./script.sh

Variáveis

#!/bin/bash
NOME="Linux"
echo "Olá, $NOME"
echo "Olá, ${NOME}!"   # chaves para delimitar

# Variáveis especiais
echo $0   # nome do script
echo $1   # primeiro argumento
echo $#   # número de argumentos
echo $?   # código de saída do último comando

Condicionais

#!/bin/bash
if [ -f "/etc/passwd" ]; then
    echo "Arquivo existe"
else
    echo "Arquivo não existe"
fi

# Comparações
# -eq, -ne, -lt, -gt  (números)
# ==, !=              (strings)
# -f, -d, -e          (arquivo, diretório, existe)
# -z, -n              (string vazia, não vazia)

if [ "$1" == "start" ]; then
    echo "Iniciando..."
elif [ "$1" == "stop" ]; then
    echo "Parando..."
else
    echo "Uso: $0 {start|stop}"
fi

Loops

# for
for i in {1..5}; do
    echo "Iteração $i"
done

for arquivo in *.txt; do
    echo "Processando: $arquivo"
done

# while
COUNT=0
while [ $COUNT -lt 5 ]; do
    echo $COUNT
    ((COUNT++))
done

Funções

#!/bin/bash
log() {
    local mensagem=$1
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $mensagem"
}

log "Script iniciado"
log "Processando arquivos"
log "Script finalizado"

Dicas de Boas Práticas

#!/bin/bash
set -euo pipefail    # para em erro, undefined var, pipe falho

# Sempre use aspas em variáveis
echo "$NOME"         # certo
echo $NOME           # errado (quebra se tiver espaços)

# Valide argumentos
if [ $# -eq 0 ]; then
    echo "Uso: $0 <arquivo>"
    exit 1
fi

Shell scripting é a cola que une o Linux. Invista em aprender bem — vai economizar horas de trabalho repetitivo.