Sei sulla pagina 1di 13

Linux System Administration 456 Shell Script Parte 1

www.4linux.com.br

-2

Sumrio
Shell Script Parte 1.................................................................................................................... 3 1.1. Objetivos:........................................................................................................................ 3 1.2. Introduo....................................................................................................................... 4 1.3. Conhecimentos bsicos................................................................................................... 5
1.3.1. Crases.................................................................................................................................... 5 1.3.2. Variveis................................................................................................................................ 6 1.3.3. Clculos em Shell Script - expr..............................................................................................7 1.3.4. Trabalhando com parmetros ............................................................................................... 8

1.4. Estruturas Condicionais................................................................................................ 11 REFERNCIAS BIBLIOGRFICAS.................................................................................................................... 14 ANEXOS................................................................................................................................... 16 Primeiro anexo..................................................................................................................... 17


Tpico do Anexo ............................................................................................................................ 17

ndice de tabelas ndice de Figuras

Shell Script Parte 1 - 3

Shell Script Parte 1

1.1. Objetivos:
Entender como funciona e como criar scripts em Shell

Shell Script Parte 1 - 4

1.2. Introduo
Os sistemas Unix-like, como o GNU/Linux, possuem camadas. Estas camadas so o hardware, o kernel, os programas/comandos e o shell. O shell a camada mais externa de um sistema Unix-like. Script um arquivo de texto que possui uma seqncia de instrues e comandos que so executados linha a linha. A vantagem de se programar em Shell Script automatizar tarefas rotineiras, como backup, instalao ou remoo de programas. Bourne Again Shell: Este o shell desenvolvido para o projeto GNU usado pelo GNU/Linux, muito usado pois o sistema que o porta (GNU/Linux) evolui e adotado rapidamente. Funes do Shell :

Analisar dados a partir do prompt (dados de entrada); Interpretar comandos; Controlar ambiente Unix-like (console); Fazer redirecionamento de entrada e sada; Execuo de programas; Linguagem de programao interpretada.

Shell Script Parte 1 - 5

1.3. Conhecimentos bsicos


O uso da tralha (#). A tralha ou jogo da velha (#) representa, em vrias linguagens de programao, um comentrio, o mesmo acontece com o Shell Script. Um script em Shell iniciado com a seguinte linha:

#!/bin/SHELL_EM_USO

Para o GNU/Linux:

#!/bin/bash

Esta linha acima indica o caminho (path) para o interpretador que ser usado no script.

1.3.1. Crases
As crases so usadas para dar prioridade a um comando, veja um exemplo:

$ echo A verso do kernel do `uname -o` `uname -r`

Sada:

A verso do kernel deste GNU/Linux 2.6.15

Se voc tirar as crases, veja a sada:

A verso do kernel deste uname -o uname -r

Shell Script Parte 1 - 6

1.3.2. Variveis

A varivel representa um espao em memria para que sejam armazenados dados. Uma varivel representada por $ (cifro). Exemplo de varivel:

# guarda_roupa=camiseta # echo $guarda_roupa


Sada: camiseta Depois de editar um novo script, necessrio modificar a permisso deste arquivo, seno este no poder ser executado, veja o porqu:

$ ls -l -rw-r--r-- 1 leo users 0 2006-05-20 13:20 backup.sh $ chmod +x backup.sh $ ls -l -rwxr-xr-x 1 leo users 0 2006-05-20 13:20 backup.sh Para executar: $ ./backup.sh

Shell Script Parte 1 - 7

1.3.3. Clculos em Shell Script - expr


Operadores aritmticos: + Soma - Subtrao * Produto / Diviso % Resto da diviso
Para fazer um clculo necessrio usar o comando expr. Exemplos:

$ expr 20 + 05 $ expr 20 - 05 $ expr 20 \* 05 $ expr 20 / 05 $ expr 20 % 05

Shell Script Parte 1 - 8

1.3.4. Trabalhando com parmetros

Um parmetro representado por $n, onde n a posio do caractere ou conjunto de caracteres.

$1 o primeiro caractere ou primeiro conjunto de caracteres; $2 o segundo caractere ou o segundo conjunto de caracteres e assim por diante.
Na prtica, veja como fcil: Supondo um programa chamado "monte_nome" que exibe o nome montado aps receber letra por letra. Veja o script:

# # Script para montar nomes # Este script recebe nove parmetros # #!/bin/bash echo $1 $2 $3 $4 $5 $6 $7 $8 $9 # # Fim do script # $./monte_nome M A R I A (Note que entre cada parmetro h um espao) Sada: MARIA

E o parmetro $0? Qual o seu contedo?


O parmetro $0 representa o nome do prprio programa.

Shell Script Parte 1 - 9 Mas pense neste programa , pssimo pois est limitado a nove caracteres apenas. simples arrumar isso, veja:

# # Script para montar nomes # Este script recebe "n" parmetros # #!/bin/bash echo $* echo Foram passados $# parametros # # Fim do script # $ ./monta_nome M A R I A D A S I L V A Sada: MARIADASILVA

O $* recebe todos os parmetros passados. O Linux no se importa com a extenso de arquivos. Foi colocada a extenso .sh para ajudar a lembrar que esse arquivo um script.

atravs da permisso que ele sabe se o arquivo executvel ou no!

# vi usuarios.sh

A primeira linha do script deve ser essa aqui:

#!/bin/bash

Shell Script Parte 1 - 10

Depois que defini-se essa linha, j pode colocar os comandos que deseja-se executar. O objetivo obter uma lista dos usurios cadastrados no sistema.

echo Lista completa dos usurios do sistema cut -f1 -d : /etc/passwd | sort | more

A primeira opo que temos dele a f1 que est pedindo para o cut cortar o primeiro campo (field) do arquivo /etc/passwd. S que alm de falar para mostrar o primeiro campo, preciso dizer para o cut qual o meu delimitador, ou seja, o que separa cada informao. E no caso, o delimitador (opo -d) o :

echo "O Sistema possui `cat /etc/passwd | wc -l` usuarios"

A novidade nessa terceira linha alm das crases o comando wc. wc significa word count. um comando usado para contar palavras. Mas com a opo -l ( l de limo!), ele conta as linhas. Ento, agora s executar o script. Para isso, basta salvar o arquivo, sair e dar permisso de execuo:

# chmod +x usuarios.sh

Ento vamos executar:

./usuarios.sh

Shell Script Parte 1 - 11

1.4. Estruturas Condicionais


Uma linguagem de programao no pode sobreviver sem estruturas

condicionais. As estruturas condicionais so usadas em tarefas muito corriqueiras. Para compreender a estrutura condicional do Shell Script, primeiro necessrio saber como ele testa se uma condio falsa ou verdadeira.

Para isso, o shell script trabalha com um cdigo de retorno. Esse cdigo de retorno fica guardado dentro de uma varivel que representada por $? (cifro + ponto de interrogao). De modo que se um comando no shell for executado com sucesso, o cdigo de retorno ser igual a ZERO.
Se um comando no shell falhar, o valor retornado ser DIFERENTE DE ZERO. Listando um arquivo que existe:

$ touch testando.txt $ ls testando.txt testando.txt $ echo $? 0


Listando um arquivo que NO existe:

$ ls nada ls: nada: Arquivo ou diretrio no encontrado $ echo $? 2

O cdigo de retorno foi diferente de zero, ento o comando NO foi executado com sucesso. O comando if do Shell, no seu formato normal, no testa uma condio! Ele testa se uma instruo foi executada com sucesso ou no, ou seja, se seu cdigo de retorno igual ou diferente a zero. possvel testar condies tambm, isto ser mostrado mais a frente.

Shell Script Parte 1 - 12

Sintaxe do if: if [ <expresso> ] then comando(s) else comando(s) fi


Exemplo:

$ vi pedido.sh # Pergunta ao usurio se ele quer listar o diretrio corrente #!/bin/bash resposta=$1 if test $resposta = S then echo "O contedo do diretrio corrente :" ls else if test $resposta = N then echo "No quer listar!" fi fi

Para cada if tenho um fi

Salve e d permisso de execuo no arquivo.

Shell Script Parte 1 - 13

$ ./pedido.sh S O contedo do diretrio corrente : documentos arquivo.txt $ ./pedido.sh N No quer listar!

Reescrevendo o cdigo de maneira mais legvel:

$ vi pedido.sh # # Pergunta ao usurio se ele quer listar o diretrio corrente # #!/bin/bash resposta=$1 if [ $resposta = S ] then echo "O contedo do diretrio corrente :" ls else if [ $resposta = N ] then echo "No quer listar!" fi fi

Potrebbero piacerti anche