user@lpi:~$ linux-essentials
Início / Tópico 3 · As maravilhas da linha de comando / 3.3

3.3 — Transformando comandos em scriptsTópico 3: As maravilhas da linha de comandopeso 4

O que você precisa entender

Um script é só uma sequência de comandos salva num arquivo, que o shell executa de cima pra baixo. A prova cobra o básico de shell scripting: variáveis, condicionais, loops e permissão de execução.

Estrutura mínima de um script

#!/bin/bash
# A primeira linha é o "shebang" — diz qual interpretador usar

echo "Olá, mundo!"

Pra rodar: precisa de permissão de execução (chmod +x script.sh) e então ./script.sh, ou rodar direto com bash script.sh (sem precisar de permissão nesse caso).

Variáveis

nome="Mundo"
echo "Olá, $nome"          # usa $ pra ler o valor
echo "Olá, ${nome}!"       # chaves ajudam a delimitar o nome da variável

Argumentos do script

#!/bin/bash
echo "Nome do script: $0"
echo "Primeiro argumento: $1"
echo "Segundo argumento: $2"
echo "Todos os argumentos: $@"
echo "Quantidade de argumentos: $#"

Condicionais (if)

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

Testes comuns dentro de [ ]:

Teste Verifica
-f arquivo É um arquivo comum?
-d pasta É um diretório?
-e caminho Existe (arquivo ou pasta)?
-z string String está vazia?
"$a" = "$b" Strings são iguais?
$a -eq $b Números são iguais?
$a -gt $b Número a é maior que b?

Loops

# for: repete para cada item de uma lista
for arquivo in *.txt; do
    echo "Encontrado: $arquivo"
done

# while: repete enquanto a condição for verdadeira
contador=1
while [ $contador -le 5 ]; do
    echo "Contagem: $contador"
    contador=$((contador + 1))
done

Exit status (código de saída) — cai na prova

Todo comando retorna um código: 0 = sucesso, qualquer outro número = erro.

ls /etc
echo $?          # mostra o código de saída do último comando (0 = ok)

comando_que_nao_existe
echo $?           # normalmente 127 (comando não encontrado)

Comandos para testar (monte esses scripts de verdade)

# 1. Criar e dar permissão de execução a um script
echo -e '#!/bin/bash\necho "Funcionou!"' > meuscript.sh
chmod +x meuscript.sh
./meuscript.sh

# 2. Script que recebe argumento
echo -e '#!/bin/bash\necho "Você digitou: $1"' > argumento.sh
chmod +x argumento.sh
./argumento.sh teste

# 3. Ver o código de saída do último comando
ls /pasta-que-nao-existe
echo $?

# 4. Loop simples direto no terminal
for i in 1 2 3; do echo "Número $i"; done

# 5. Verificar se um arquivo existe antes de agir
[ -f ~/.bashrc ] && echo "Existe!" || echo "Não existe"

📌 Exercício prático

Crie um script chamado backup-simples.sh que: (1) receba o nome de uma pasta como argumento ($1), (2) verifique com if [ -d "$1" ] se a pasta existe, (3) se existir, compacte ela com tar -czvf num arquivo .tar.gz com a data no nome (dica: data=$(date +%Y%m%d)), (4) se não existir, mostre uma mensagem de erro. Dê permissão de execução e teste com uma pasta real.