domingo, 16 de agosto de 2009

Shell script I

- Objetivo
  • Entender a estrutura do script;
  • Automatizar tarefas;
  • Conhecer algumas variáveis importantes;
Tarefas administrativas são, muitas vezes, longas e repetitivas. Podemos automatizar esses procedimentos através de scripts. Na verdade, os scripts podems nos auxiliar muito, numa vasta gama de atividades.



O que é um script?

Um script é uma sequencia de instruções que são executadas toda vez que o mesmo é chamado. Mas, qual a diferença entre um script e um programa, já que ambos são sequencias de instruções? Um scrip, é um programa não compilado. O processador da máquina só é capaz de executar programas binários, isto é , compilados espeicificamente para ele. Dessa forma, é necessário um programa que interprete esse script, em tem de execução, para que o mesmo possa ser executado. No nosso caso, esse programa será um shell, já que estamos falando de shell scripts.
Estudando um exemplo

# !/bin/bash

# meu primeiro shell script

cd ~

clear

ls -lah
date

cd -


Este é um script bem simples. As linhas que começam pelo simbolo # são comentários, ou seja tudo que aparece depois do # é desprezado.

Mas a primeira linha, que parece um comentário, possui uma característica um tanto estranha. Na verdade, a primeira linha de um script, quando contem em seu inicio a seguencia #! indica qual programa irá interpretar aquele script. No nosso exemplo será o programa /bin/bash, um shell. Mas o script, propriamente dito, executa 4 comandos simples: Acessar o diretório do usuário corrente (cd ~); limpar tela (clear); lista o conteudo (ls -lha), imprimi a data (date) e volta ao diretorio original (cd - ).

Supondo que nosso script denomina-se s1, para podermos executa-lo, devemos executar o comando:

# chmod u+x s1

e em seguida o script:

# ./s1

Lendo parâmetros da linha de comandos.

Em algumas situações, pode ser necessário fornecer parâmetros para um script. Por exemplo, se ao invês de listar o contéudo do diretório pessoal do usuário, quiséssemos que o script listasse o contéudo de um diretório qualquer. Supondo que esse novo script chama-se s2, uma possível forma de utilização do script seria:

# ./s2 /etc


Para passar parâmetros para esse script, precisamos conhecer a função de algumas variáveis: $1,$2. Quando passamos algum parâmetro para o nosso script, esse parâmetro fica armazenado em uma variável especifica. Por exemplo:

# ./script parametro1 parametro2 parametro3

Para conseguirmos resgatar o valor desses parametros, precisamos chamar as variaveis 1,2 e 3 por exemplo:

#!/bin/bash

#
# esse script pega o valor dos parametros e imprimi na tela.
echo $1
echo $2
echo $3

# ./script3 42 the answer
Exercício prático

1- Crie um script shell que mostre uma porção de um arquivo, onde os argumentos seriam:
1 - nome do arquivo
2 - Número da primeira linha mostrada
3 - Numero da ultima linha mostrada

exemplo de uso, supondo o nome do script miolo:

# miolo /etc/passwd 7 18

Como o resultado, as linhas 7 a 18 (inclusive) do arquivo /etc/passwd deve ser mostrada.
Dica1: use os comandos head e tail.
Dica2:Você sabe realizar aritmética de inteiros da shell?
Dica LPI: Para a prova é bom saber a funcionalidade de algumas variáveis!!

0 comentários:

Postar um comentário