Вы находитесь на странице: 1из 25

Faculdade do Par-FAP Disciplina: Programao em Ambiente de Redes Professor: Armando Hage

Introduo ao Shell Script


Introduo O que o Shell Shell Script Primeiro Script Recebendo Parmetros Exerccios

Introduo
O sistema UNIX foi concebido em diversas camadas. Hardware: Dispositivos Kernel: Gerneciamento e controle do Hardware Programas: realizam tarefas especficas Shell: responsvel pela interao entre o usurio e o sistema operacional

O que o Shell
o programa que l o comando digitado pelo usurio e converte-o em uma forma mais simplificada e legvel para o Sistema Operacional UNIX. Possui um linguagem interpretada, com comando de alto nvel, que permite a construo de loop(laos), tomada de deciso, e de armazenamento de valores de variveis. O Shell o "prompt" da linha de comando do Linux, o servo que recebe os comandos digitados pelo usurio e os executa. O Shell aquele que aparece logo aps se digitar a senha do usurio e entrar na tela preta do Linux. Ou na interface grfica, ao clicar no cone do Xterm ou do rxvt.

Shell Script Um script um arquivo que guarda vrios comandos e pode ser

Um script um arquivo que guarda vrios comandos e pode ser executado sempre que preciso. Os comandos de um script so exatamente os mesmos que se digita no prompt, tudo Shell. Se de tempos em tempos voc quer saber informaes do sistema como horrio, ocupao do disco e os usurios que esto logados, preciso digitar trs comandos. melhor fazer um script chamado "sistema" e colocar os comandos nele. Para que o script entre em execuo ele precisa ter permisso de execuo no sistema que pode ser realizada com o comando chmod + x sistema ou chmod 755 e ser colocado em execuo com o coamando ./sistema

O Shell um programa interpretador de comandos que foi escrito em diferentes verses. Bourne Shell
Shell padro do UNIX. Escrito por Stephen Bourne da Bell Labs, tambm chamado de Standard Shell Representao para UNIX sh

Principais Shells

Bourne-Again Shell
Shell padro do Linux 100 % compatvel com o Bourne Shell, com comandos adicionais para Korn

Shell e C Shell.
Representao para Linux bash

Korn Shell
Desenvolvido por David Korn da Bell Labs da AT&T. Atualizao do Bourne Shell, com maior nmero de comandos Representao para o UNIX ksh

C Shell
Desnvolvido por Bill Joy da Berkeley University, sendo o mais utilizado em

BSD

Cabealhos Inicias
O caracter # considerado comentrio pelo interpretador de comandos. Mas quando a primeira linha de um script inicia por #!, o Shell entender que o que vem a seguir o caminho(path) para o interpretador que ser usudo pelo este script. Exemplos: #!/bin/bash #!/bin/sh #!/bin/awk #!/bin/sed

Realizando sadas na Tela


echo
Utilizado para realizar sadas na tela Para impresso de barra(\) deve-se colocar (\\) Texto em que se deseja evidenciar o espao entre

frases de estar entre aspas( )


Exemplo:$echo Neste texto foi $echo Neste texto no foi espao desconsidera o espao desconsidera o

O que estiver entre crase(`) um comando Exemplo: echo " Nome do coputador e `uname -n`" Sada: Nome do coputador e compuador1

Realizando sadas na Tela


Exemplo de um script com mais recursos. #!/bin/bash echo "Data e Horrio:" date echo echo "Uso do disco:" df echo echo "Usurios conectados:" w

Interagindo com o usurio


Exemplo de um script com mais recursos e interao com o usurio.
#!/bin/bash echo "Vou buscar os dados do sistema. Posso continuar?[sn]" read RESPOSTA test "$RESPOSTA" = "n" && exit echo "Data e Horrio:" date echo echo "Uso do disco:" df echo echo "Usurios conectados:" w

O contedo da varivel acessado colocandose um cifro "$" na frente O comando test muito til para fazer vrios tipos de checagens em textos e arquivos O operador lgico "&&", s executa o segundo comando caso o primeiro tenha sido OK. O operador inverso o "||"

Interagindo com o usurio


Exemplo de um script com comentrios
#!/bin/bash # sistema script que mostra informaes sobre o sistema # Autor: Fulano da Silva # Pede uma confirmao do usurio antes de executar echo "Vou buscar os dados do sistema. Posso continuar? [sn] " read RESPOSTA # Se ele digitou 'n', vamos interromper o script test "$RESPOSTA" = "n" && exit # O date mostra a data e a hora correntes echo "Data e Horrio:" date echo # O df mostra as parties e quanto cada uma ocupa no disco echo "Uso do disco:" df echo # O w mostra os usurios que esto conectados nesta mquina echo "Usurios conectados:"

Definido Variveis
Para definir uma varivel, basta usar o sinal de igual "=" e para ver seu valor, usase o "echo": prompt$ VARIAVEL="um dois tres" prompt$ echo $VARIAVEL um dois tres prompt$ echo $VARIAVEL $VARIAVEL um dois tres um dois tres prompt$
Ateno:No podem haver espaos ao redor do igual "="

Definido Variveis
possvel armazenar a sada de um comando dentro de uma varivel. Ao invs de aspas, o comando deve ser colocado entre "$(...)" prompt$ HOJE=$(date) prompt$ echo "Hoje : $HOJE" Hoje : Sb Abr 24 18:40:00 BRT 2004 prompt$ unset HOJE prompt$ echo $HOJE prompt$
Ateno:o comando "unset" apaga uma varivel. Para ver quais as variveis que o Shell j define por padro, use o comando "env"

Detalhes de comandos
Diferente de outras linguagens de programao, o Shell no usa os parnteses para separar o comando de seus argumentos, mas sim o espao em branco. O formato de um comando sempre: COMANDO OPES PARMETROS Exemplo: "cat" mostra o contedo de um arquivo. n sistema" mostra o script sistema, com as linhas "cat numeradas. O "read" um comando do prprio Shell para leitura. "date"" um executvel do sistema.

Detalhes de comandos

Use "man comando" ou "comando help" para obter mais informaes sobrecada um deles.

Detalhes de comandos
Em Shell possvel combinar comandos, aplicandoos em seqncia, para formar um comando completo. Usando o pipe "|" possvel canalizar a sada de um comando diretamente para a entrada de outro, fazendo uma cadeia de comandos.
prompt$ cat /etc/passwd | grep root | cut c110 root:x:0:0 operator:x prompt$

cat - Mostra o arquivo todo grep- pega essa sada e extrai apenas as linhas que contm a palavra "root" cut- extrai somente nessas linhas que o grep achou,extrai os 10 primeiros caracteres.

Detalhes de comandos
possvel redirecionar a sada de um comando para um arquivo ao invs da tela, usando o operador ">". Para guardar a sada do comando anterior no arquivo "saida", o comando a ser exucutado dever ser:
prompt$ cat /etc/passwd | grep root | cut c110 > saida prompt$ cat saida root:x:0:0 operator:x prompt$

Detalhes de comandos
O comando test
Consegue fazer vrios tipos de checagens, em nmeros, textos e

arquivos. Ele possui vrias opes para indicar que tipo de teste ser feito, algumas delas:

Detalhes de comandos
Exerccio Fazer o script "testa arquivos", que pede ao usurio para digitar um arquivo e testa se este arquivo existe. Se sim, diz se um arquivo ou um diretrio. Exemplo de uso
prompt$ testaarquivos Digite o arquivo: /naoexiste O arquivo '/naoexiste' no foi encontrado prompt$ testaarquivos Digite o arquivo: /tmp /tmp um diretrio prompt$ testaarquivos Digite o arquivo: /etc/passwd /etc/passwd um arquivo prompt$

Detalhes de comandos
Resposta do Exerccio #!/bin/bash echo n "Digite o arquivo: "; read ARQUIVO [ d "$ARQUIVO" ] && echo "$ARQUIVO um diretrio" [ f "$ARQUIVO" ] && echo "$ARQUIVO um arquivo" [ f "$ARQUIVO" o d "$ARQUIVO" ] || echo "O arquivo '$ARQUIVO' no foi encontrado" echo

Recebendo opes e parmetros


Dentro do script, algumas variveis especiais so definidas automaticamente, em especial, "$1" contm o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante. #!/bin/sh # argumentos mostra o valor das variveis especiais echo "O nome deste script : $0" echo "Recebidos $# argumentos: $*" echo "O primeiro argumento recebido foi: $1" echo "O segundo argumento recebido foi: $2"

prompt$ ./argumentos um dois trs O nome deste script : ./argumentos Recebidos 3 argumentos: um dois trs O primeiro argumento recebido foi: um O segundo argumento recebido foi: dois

Expresses Aritmticas
O Shell tambm sabe fazer contas. A construo usada para indicar uma expresso aritmtica "$((...))", com dois parnteses. prompt$ echo $((2*3)) 6 prompt$ echo $((2*32/2+3)) 8 prompt$ NUM=44 prompt$ echo $((NUM*2)) 88 prompt$ NUM=$((NUM+1)) prompt$ echo $NUM 45

If, For e While


Shell tambm tem estruturas para se fazer condicionais e loop. As mais usadas so if, for e while. o if testa um comando e no uma condio.

if test "$VARIAVEL" gt 10 then echo " maior que 10" else echo " menor que 10" fi

If, For e While


H um atalho para o test , que o comando [. if [ "$VARIAVEL" gt 10 ] then echo " maior que 10" else echo " menor que 10" fi o while um lao que executado enquanto um comando retorna OK. while test f /tmp/lock do sleep 1 done

If, For e While


o for percorre uma lista de palavras, pegando uma por vez: for numero in um dois trs quatro cinco do echo "Contando: $numero" done Uma ferramenta muito til para usar com o for o seq, que gera uma seqncia numrica. Para fazer o loop andar 10 passos, podese fazer: for passo in $(seq 10)

Exerccios
1- Crie um Script Shell que leia dois nmeros a ralao entre eles. prompt$ ./relacao.sh 3 5 3 menor 5 prompt$ ./relacao.sh 5 3 5 maior 3 prompt$ ./relacao.sh 5 5 5 igual 5 2- Recebe um nmero como parmetro e o diminui at chegar a zero, mostrando na tela cada passo, em uma mesma linha. prompt$ ./zerador.sh 5 5 4 3 2 1 0 prompt$ ./zerador.sh 10 10 9 8 7 6 5 4 3 2 1 0 Agora que voc j teve o primeiro contato v para apgina da disciplina e tente terminar os demais exerccios.

Вам также может понравиться