Programacao do Shell

De Wiki Cursos IFPR Foz
Revisão de 18h57min de 4 de novembro de 2015 por Evandro.cantu (discussão | contribs)
Ir para navegaçãoIr para pesquisar

Programação do Shell

A programação do Shell permite que o administrador crie pequenos programas para automatizar a administração do sistema, como por exemplo, uma sequência de comandos para realizar backup de dados.

Um programa Shell, ou script shell, é criado em um arquivo de texto contendo comandos do Linux, e pode incluir variáveis, realização de testes, laços de repetição, comentários, etc.

Um programa Shell é interpretado linha a linha pelo Shell, portanto, não é um programa a ser compilado [1].

Comandos básicos

Um script shell inicia com a definição de qual será o Shell interpretador do comando, por exemplo:

#!/bin/bash

Como todo programa, recomenda-se a inclusão de comentários para descrever a função do script e facilitar sua compreensão. Todo comentário inicia com o caractere #, com exceção da linha de definição do Shell interpretador.

Exemplo de script que imprime uma frase [1]:

#!/bin/bash
#Este script imprime uma frase
echo "Alo $USER, bom dia!"
No exemplo é utilizada a variável $USER que retorna o nome do usuário.

O script deve ser salvo em um arquivo com a extensão .sh (exemplo: alo.sh) e deve ter permissão de execução:

chmod +x alo.sh

Para executá-lo, chamar pelo nome do arquivo, por exemplo:

./alo.sh

Variáveis e argumentos

Variáveis internas do Shell
O Shell possui várias variáveis internas, como por exemplo $USER, $HOME, $SHELL, $PATH, etc.
Uma lista das variáveis internas do Shell pode ser obtida com o comando:
printenv
Variáveis definidas pelo usuário
O usuário pode definir variáveis dentro de um script e associar valores a elas, por exemplo:
var="valor"
O valor pode ser uma frase, numero, comando ou outra variável.
O valor pode ser expressado entre as aspas (“ ”), apóstrofos (' ') ou crases (` `):
  • aspas (“ ”): interpretam as variáveis que estiverem dentro do valor;
  • apóstrofos (' '): leem o valor literalmente, sem interpretar nada;
  • crases (` `): interpretam um comando e retornar a sua saída para a variável.

Exemplos [2]:

var="Eu sou o usuário $user"
echo $var

Eu sou o usuário evandro
var='Eu sou o usuário $user'
echo $var

Eu sou o usuário $user
var="Meu diretório atual é o `pwd`"
echo $var

Meu diretório atual é o /home/evandro
Variáveis passadas como argumentos
Um script pode manipular variáveis que recebem valor de argumentos passados quando o script é chamado.
Internamente ao script, as seguintes variáveis são utilizadas:
  • '$0' retorna o nome do script;
  • '$1 a $9' retorna valor dos argumentos passados na chamada do script;
  • '$#' retorna o número de argumentos;
  • '$*' retorna todos os argumentos.

Exemplo:

#!/bin/bash
#Este script verifica se há dois argumentos
#e realiza a soma dos mesmos
if [ $# -eq 2 ]
then
  soma=`expr $1 + $2`
  echo "Soma = $soma" 
else
  echo "Usar 2 argumentos"
fi
Variáveis cujo valor é requisitado ao usuário pelo script
Como qualquer linguagem de programação o usuário pode ser solicitado a fornecer um valor, o qual será lido pela função read e armazenado em uma variável.
:Exemplo:
#!/bin/bash
#Este script requisita que o usuário digite um valor
echo -n "Por favor, digite seu nome: "
read nome
echo "Seu nome é $nome"

Estruturas de controle

if
Implementa o clássico se-então-senão.

Exemplos:

#!/bin/bash
if [ $HOME = `pwd` ]
then
  echo "Você está no diretório home."
else
  echo "Você está no diretório `pwd`"
fi
case
Implementa um se múltiplo.

Exemplo:

#!/bin/bash
echo -n "Digite um número: "
read num
case $num in
 1)
    echo "Número 1";
 ;;
 2)
    echo "Número 2";
 ;;
 *)
    echo "Não é número 1 nem 2";
 ;;
esac
while
Implementa o enquanto-faça.
#!/bin/bash
i=1;
while [ $i -le 10 ] ; do 
  echo $i
  i=`expr $i + 1 `;
done

Referências

  1. 1,0 1,1 VALLE, O. T. Adminstração de Redes com Linux: Fundamentos e práticas, IFSC, Florianópolis, 2010.
  2. http://www.devin.com.br/shell_script/

--Evandro.cantu (discussão) 10h23min de 4 de novembro de 2015 (BRST)