A criação de scripts em Bash é uma das formas mais populares e acessíveis de programar em um ambiente Linux. Os exemplos simples que se seguem têm como objetivo ajudar na compreensão do processo e apresentar os fundamentos da programação em Bash.
1. Exibindo “Olá Mundo” em Bash
O exemplo “Olá Mundo” é um excelente ponto de partida para familiarizar-se com qualquer linguagem de programação, e o Bash não é diferente.
A seguir, veja como exibir “Olá Mundo” utilizando o Bash:
- Abra um editor de texto e inicie a criação de um novo arquivo com as seguintes linhas de código.
- A primeira linha de seus scripts em Bash deve sempre ser a seguinte:
#!/bin/bash
O comando Shebang (#!/bin/bash) é crucial, pois o shell o utiliza para determinar como o script deve ser executado. Neste caso específico, ele utiliza o interpretador Bash.
- Toda linha que se inicia com o símbolo # é considerada um comentário. A linha shebang é um caso especial, mas você pode incluir seus próprios comentários para descrever o funcionamento do seu código. Adicione um comentário na linha 2, por exemplo:
# Este é um exemplo de comentário
- Para exibir texto na saída padrão, utilize o comando `echo`, seguido pelo texto que você deseja exibir. Adicione a seguinte linha ao seu script, na linha 3:
echo "Olá Mundo"
- Salve o arquivo de script, preferencialmente com a extensão .sh, por exemplo, hello_world.sh. A extensão não é obrigatória, mas é uma convenção que ajuda na organização.
- Para executar o script, é necessário torná-lo executável. Utilize o comando `chmod` (alteração de modo) juntamente com o argumento +x (executável) e o nome do seu script:
chmod +x hello_world.sh
- Utilize o seguinte comando para executar o script a partir do diretório onde ele está salvo:
./hello_world.sh
- Após a execução do script, o texto “Olá Mundo” será exibido no seu terminal:
2. Criando um diretório a partir da entrada do usuário
A partir de seus scripts, é possível executar qualquer programa que normalmente seria executado na linha de comando. Por exemplo, você pode criar um novo diretório a partir do seu script usando o comando `mkdir`.
- Comece com a mesma linha shebang utilizada anteriormente:
#!/bin/bash
- Solicite ao usuário que informe o nome do novo diretório, usando o comando `echo` como visto anteriormente:
echo "Insira o nome do novo diretório:"
- Utilize o comando `read` para obter a entrada do usuário. O argumento único nomeia a variável na qual o shell armazenará a entrada:
read newdir
- Quando precisar utilizar o valor armazenado em uma variável, adicione o símbolo de cifrão ($) antes do nome da variável. Você pode passar o conteúdo da variável de entrada como argumento para o comando `mkdir`, criando um novo diretório:
mkdir $newdir
- Ao executar este script, será solicitado que você insira um nome. Forneça um nome válido para o diretório e você verá que o script o cria no seu diretório atual:
3. Criando um diretório utilizando argumentos de linha de comando
Como alternativa à leitura interativa da entrada, a maioria dos comandos do Linux oferece suporte a argumentos. Você pode fornecer um argumento ao executar um programa para controlar seu comportamento.
Dentro do seu script, você pode utilizar `$1` para referenciar uma variável especial que contém o valor do primeiro argumento. `$2` se referirá ao segundo argumento e assim por diante.
- Crie um diretório usando o comando `mkdir`, como no exemplo anterior. Desta vez, no entanto, use a variável interna `$1`:
#!/bin/bash
mkdir $1 - Execute o script, passando o nome desejado para o novo diretório como argumento:
./arg_dir.sh Test
Você deve estar se perguntando o que acontece se você executar o script sem fornecer nenhum argumento. Experimente e veja; você deverá receber uma mensagem de erro que começa com “usage: mkdir”:
Sem nenhum argumento de linha de comando, o valor de `$1` estará vazio. Quando seu script chama `mkdir`, ele não está fornecendo um argumento, e o comando `mkdir` retorna esse erro. Para evitar isso, você pode verificar essa condição e exibir uma mensagem de erro mais amigável:
- Como de costume, comece com a linha shebang:
#!/bin/bash
- Antes de chamar `mkdir`, verifique se o primeiro argumento está vazio (ou seja, se não há argumentos). Você pode fazer isso usando a instrução `if` do Bash, que executa um bloco de código com base em uma condição:
if [ "$1" = "" ]; then
- Se o primeiro argumento estiver vazio, exiba uma mensagem de erro e encerre o script:
echo "Por favor, forneça o nome do novo diretório como primeiro argumento"
exit - A palavra-chave “fi” (o inverso de “if”) sinaliza o fim de uma instrução `if` no Bash:
fi
- Seu script agora pode prosseguir como antes, para lidar com o caso em que um argumento é fornecido:
mkdir $1
Ao executar esta nova versão do script, você receberá uma mensagem caso se esqueça de fornecer um argumento:
4. Removendo um arquivo usando uma função Bash
Se você estiver repetindo o mesmo código, considere envolvê-lo em uma função. Você poderá então chamar essa função sempre que necessário.
A seguir, um exemplo de função que remove um arquivo específico.
- Comece com a linha shebang:
#!/bin/bash
- Defina uma função escrevendo o seu nome seguido por parênteses vazios e os comandos dentro de chaves:
del_file() {
echo "removendo $1"
rm $1
}Você pode chamar a função, passando o nome de um arquivo a ser removido:
del_file test.txt
Quando você chama uma função, ela define o valor especial `$?` com o status de saída do último comando executado. O status de saída é útil para verificação de erros; neste exemplo, você pode verificar se o comando `rm` foi bem-sucedido:
if [ $? -ne 0 ]; then
echo "Desculpe, não foi possível remover o arquivo"
fi
5. Criando uma calculadora básica para operações aritméticas
Este último exemplo demonstra uma calculadora bem básica. Ao executá-lo, você fornecerá dois valores e escolherá uma operação aritmética a ser realizada sobre eles.
A seguir, o código para `calc.sh`:
#!/bin/bash
echo "Insira o primeiro número: "
read aecho "Insira o segundo número: "
read b
echo "Escolha a operação aritmética:"
echo "1. Adição"
echo "2. Subtração"
echo "3. Multiplicação"
echo "4. Divisão"
read choice
case $choice in
1)
result=`echo $a + $b | bc`
;;2)
result=`echo $a - $b | bc`
;;3)
result=`echo $a \* $b | bc`
;;4)
result=`echo "scale=2; $a / $b" | bc`
;;
esacecho "Resultado: $result"
Observe o uso de `case … esac`, que é o equivalente no Bash da instrução `switch` de outras linguagens. Ele permite testar um valor – neste caso, a variável `choice` – com relação a vários valores fixos e executar o código associado.
Este script utiliza o comando `bc` para realizar cada cálculo.