Scripts de shell básicos
Um script é só uma sequência de comandos que você já digitaria à mão, salva num arquivo pra nunca mais precisar redigitar.
Depois de acumular alguns comandos que você roda sempre na mesma sequência, o próximo passo natural é parar de digitar tudo à mão toda vez e salvar essa sequência num arquivo — um script de shell. Não tem mistério: um script é um arquivo de texto comum com comandos, um por linha, executado de cima pra baixo.
A linha shebang
Todo script de shell começa com uma linha especial chamada shebang, que diz ao sistema qual programa deve interpretar o resto do arquivo:
#!/bin/bashApesar de parecer um comentário (começa com #), essa linha específica no topo do arquivo tem um significado especial pro sistema operacional: #!/bin/bash diz "rode este arquivo usando o interpretador bash que está em /bin/bash". Sem essa linha, o sistema não saberia automaticamente que tipo de script está executando.
Variáveis dentro de um script
Variáveis dentro de um script funcionam igual às da lição anterior, sem export quando o valor só é usado dentro do próprio script:
#!/bin/bash
nome="mundo"
echo "Olá, $nome!"if/else — decisões condicionais
#!/bin/bash
idade=20
if [ $idade -ge 18 ]; then
echo "Maior de idade"
else
echo "Menor de idade"
fiA sintaxe estranha com colchetes ([ $idade -ge 18 ]) é assim mesmo no bash — os espaços dentro dos colchetes são obrigatórios, e -ge significa greater or equal ("maior ou igual"). Todo bloco if em shell script termina com fi (o próprio if escrito ao contrário — é assim que o bash sabe onde o bloco acaba).
Um loop for simples
#!/bin/bash
for arquivo in *.txt; do
echo "Processando: $arquivo"
doneEsse for percorre cada arquivo .txt da pasta atual, um de cada vez, executando o bloco entre do e done pra cada um. É o tipo de repetição que substituiria rodar o mesmo comando manualmente uma vez por arquivo.
Tornando o script executável e rodando
Lembra da lição 5, sobre permissões? Um arquivo de script criado normalmente não vem com permissão de execução — sem isso, o sistema recusa rodar o arquivo como programa, mesmo que o conteúdo esteja certo.
chmod +x script.sh
./script.shRepare no ./ antes do nome do script — isso é necessário porque, por segurança, o shell não procura por programas executáveis na pasta atual dentro do PATH (lição anterior). O ./ diz explicitamente "execute o arquivo que está bem aqui, nesta pasta", sem depender do PATH pra encontrá-lo.
Exercício
Escreva um script saudacao.sh que recebe o nome de um dia da semana numa variável, e imprime "Bom trabalho!" se for de segunda a sexta, ou "Aproveite o descanso!" se for sábado ou domingo (pode simplificar checando só se é "sabado" ou "domingo" contra qualquer outro valor). Lembre de deixar o script executável.