Revista Do Linux  
EDIÇÃO DO MÊS
  Shell Script
  Software Livre 2000
  Projeto Kylix
  Alta disponibilidade
  Anatomia de um ataque
  Auto-Escola Linux
  Configurando Periféricos
  Código aberto
  Ensino público
  FlagShip
  Hard e Soft
  Linux para iniciantes
  Linux para mouses

Programando em Shell Script
Aprenda a utilizar o recurso que muitas pessoas já usam para realizar inúmeras tarefas administrativas no Linux



hugo@netdados.com.br

Quem usa Linux conhece bem o prompt de comando sh, ou variações como o bash. O que muita gente não sabe é que o sh ou o bash têm uma "poderosa" linguagem de script embutida, utilizada por diversas pessoas para facilitar a realização de inúmeras tarefas administrativas no Linux, ou até mesmo para criar seus próprios programinhas.

O criador da distribuição Slackware, Patrick Volkerding, usa essa linguagem para toda instalação e configuração de sua distribuição. E agora você também poderá criar scripts para automatizar as tarefas diárias de um servidor, efetuar backup automático regularmente, procurar textos, criar formatações, e muito mais.

Para você ver como esta linguagem pode ser útil, vamos apresentar alguns passos introdutórios.

Os interpretadores de comandos são programas feitos para intermediar o usuário e seu sistema. Através deles, o usuário manda um comando, e o interpretador o executa no sistema. Eles são a "shell" do sistema Linux. Usaremos o interpretador de comandos bash, por ser mais "extenso" que o sh. E para que você tenha uma compreensão melhor das informações aqui relatadas, é recomendável ter uma base sobre o conceito de lógica de programação.

Uma das vantagens desses shell scripts é que eles não precisam ser compilados, ou seja, basta criar um arquivo texto qualquer, e inserir nele os comandos. Para dar a esse arquivo a definição de "shell script", teremos que incluir uma linha no começo do arquivo (#!/bin/bash) e torná-lo "executável", utilizando o comando chmod.

Vamos seguir com um pequeno exemplo de um shell script que a tela mostre: "Nossa! Estou vivo!":


#!/bin/bash

echo `Nossa! Estou vivo!'

Fácil, hein? A primeira linha indica que todas as outras linhas abaixo deverão ser executadas pelo bash (que se localiza em /bin/bash), e a segunda linha imprimirá na tela a frase "Nossa! Estou vivo!", utilizando o comando echo, que serve justamente para isso.

Assim, todos os comandos que digitar diretamente na linha de comando, você poderá incluir no seu shell script, criando uma série de comandos. E é essa combinação de comandos que forma o chamado shell script. Tente também dar o comando `file arquivo' e veja que a definição dele é de Bourne-Again Shell Script (Bash Script).

Contudo, para o arquivo ser executável, você tem que atribuir essa propriedade a ele. Usando o comando chmod, faremos a atribuição:


# chmod +x arquivo

Pronto, o arquivo poderá ser executado com um simples "$./arquivo".

Conceito de variáveis em shell script

Variáveis são caracteres que armazenam dados, uma espécie de atalho. O bash reconhece uma variável quando ela começa com $, ou seja, a diferença entre `palavra' e `$palavra' é que a primeira é uma palavraqualquer, e a outra, uma variável. Para definir uma variável, utilizamos a seguinte sintaxe:

variavel="valor"

O `valor' será atribuído à `variável'. Valor pode ser uma frase, números, e até outras variáveis e comandos. O valor pode ser expresso entre aspas (" "), apóstrofos (` '), ou crases (``). As aspas vão interpretar as variáveis que estiverem dentro do valor, os apóstrofos lerão o valor literalmente, sem interpretar nada, e as crases vão interpretar um comando e retornar a sua saída para a variável. Vejamos exemplos:


$ variavel="Eu estou logado como usuário $user"

$ echo $variavel

Eu estou logado como usuário cla

$ variavel=`Eu estou logado como 

usuário $user'

$ echo $variavel

Eu estou logado como usuário $user 

$ variavel="Meu diretório atual é o `pwd`"

$ echo $variavel

Meu diretório atual é o /home/cla 


Se você quiser criar um script em que o usuário deve interagir com ele, é possível que você queira que o próprio usuário defina uma variável, e para isso usamos o comando read, que dará uma pausa no script e ficará esperando o usuário digitar algum valor e teclar enter. Exemplo:



echo "Entre com o valor para a variável: " ; read variavel

(O usuário digita e tecla enter, vamos supor que ele tenha digitado `clarissa eu te amo')
echo $variavel clarissa eu te amo 

Controle de fluxo com o if

Controle de fluxo são comandos que vão testando algumas alternativas, e, de acordo com essas alternativas, vão executando comandos. Um dos comandos de controle de fluxo mais usados é certamente o if, que é baseado na lógica "se acontecer isto, irei fazer isso, se não, irei fazer aquilo". Vamos dar um exemplo:



if [ -e $linux ] 

then

echo `A variável $linux existe.'

else

echo `A variável $linux não existe.'

fi

O que este pedaço de código faz?

O if testa a seguinte expressão:
se a variável $linux existir, então (then) ele diz que existe com o echo, senão (else), ele diz que não existe. O operador -e que usei, e é pré-definido, é uma das opções que você pode encontrar na listagem dos operadores, conforme a tabela:
-eq - Igual
!= - Diferente
-gt - Maior
-lt - Menor
-o - Ou
-d - Se for um diretório
-e - Se existir
-z - Se estiver vazio
-f - Se contiver texto
-o - Se o usuário for o dono
-r - Se o arquivo pode ser lido
-w - Se o arquivo pode ser alterado
-x - Se o arquivo pode ser executado

Outras alternativas

Existem inúmeros comandos no Linux, e para explicar todos, teríamos de publicar um livro. Mas existem outras possibilidades de aprendizado dessa linguagem, que também é usada em todas as programações. Primeiro, você pode dar uma olhada na manpage do bash (comando man bash), que disponibilizará os comandos embutidos no interpretador de comandos. Uma das coisas essenciais para o aprendizado é sair coletando exemplos de outros scripts e estudá-los minuciosamente. Procure sempre comandos e expressões novas em outros scripts e em manpages dos comandos. E por último, mas não menos importante, pratique bastante.

Na tabela a seguir, você pode encontrar uma listagem de comandos para usar em sua shell script:

echo - Imprime texto na tela

read - Captura dados do usuário e coloca numa variável

exit - Finaliza o script

sleep - Dá uma pausa de segundos no script

clear - Limpa a tela

stty - Configura o terminal temporariamente

tput - Altera o modo de exibição

if - Controle de fluxo que testa uma ou mais expressões

case - Controle de fluxo que testa várias expressões ao mesmo tempo

for - Controle de fluxo que testa uma ou mais expressões

while - Controle de fluxo que testa uma ou mais expressões

E assim você pode começar a escrever seus próprios scripts e facilitar sua vida no Linux.
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade