Fundamentos
#!/bin/bash
# Shebang - indica qual shell usar
echo "Hello World"
# Imprime texto no ecrã
VARIABLE="valor"
echo $VARIABLE
# Declara e usa variável
Variáveis
- NÃO usar espaços:
var=valor - Aceder com
$var - 只读:
readonly var - Arrays:
arr=(a b c) - Parâmetros:
$1, $2, $@, $#
Aritmética
$((5 + 3))→ 8$((10 / 2))→ 5$((5 * 3))→ 15$((15 % 4))→ 3((++x))- incremento
Strings
- Comprimento:
${#str} - Substring:
${str:0:5} - Replace:
${str/old/new} - Lowercase:
${str,,} - Concatenar:
"$a$b"
Condicionais & Loops
If/Elif/Else
[ $x -eq 5 ]- igual[ $x -ne 5 ]- diferente[ $x -gt 5 ]- maior[ -f file ]- ficheiro existe[ -z "$str" ]- vazio
Case
- Múltiplos padrões
- Wildcards suportados
- Mais eficiente que if/elif
- Terminar com
esac - Exemplo: menu de opções
Loops
for i in {1..5}while conditionuntil conditionbreak, continue- Iterar ficheiros:
for f in *
Funções
function ola() {
echo "Olá, $1"
}
ola "Francisco"
# Output: Olá, Francisco
function soma() {
echo $(( $1 + $2 ))
}
resultado=$(soma 5 3)
echo $resultado # Output: 8
Ferramentas & Utilitários
Processamento de Texto
sed 's/old/new/g'- replaceawk '{print $1}'- colunasgrep -r "pattern"- pesquisacut -d: -f1- cortar campossort | uniq- ordenar/unique
Input/Output
read var- leituracat file- mostrarhead/tail- linhaswc -l- contar linhastee file- tee e file
Ficheiros & Sistema
test -e- existe?[[ $str == *pattern* ]]basename, dirnamemktemp- ficheiro tmpxargs- construir comandos
Exemplos Práticos
# Backup automático
mkdir -p /backup/$(date +%Y%m%d)
tar czf /backup/$(date +%Y%m%d)/dados.tar.gz /dados
# Verificar serviços
for svc in nginx docker ssh; do
if systemctl is-active --quiet $svc; then
echo "$svc: OK"
else
echo "$svc: FALHA"
fi
done
# Limpar logs antigos
find /var/log -name "*.log.*" -mtime +7 -delete