Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.1. Objetivos:
Entender como funciona e como criar scripts em Shell
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.
#!/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:
Sada:
1.3.2. Variveis
A varivel representa um espao em memria para que sejam armazenados dados. Uma varivel representada por $ (cifro). Exemplo de varivel:
$ 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
$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
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.
# vi usuarios.sh
#!/bin/bash
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 :
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
./usuarios.sh
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:
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.
$ 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
$ 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