1. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
O que é shell?
É uma ligação entre o usuário e o kernel.
Usuário
Prof. Tarcísio Franco
Shell
Kernel
HD
2. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
O que é script?
– É um arquivo que guarda vários
comandos e pode ser executado sempre
que preciso
Prof. Tarcísio Franco
– Bom para automatizar tarefas repetitivas
– Comandos de um script são exatamente
os mesmos que se digita no prompt
3. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
O que é um programa?
Principais diferenças entre scripts e programa
Script Programa
Prof. Tarcísio Franco
Codificação Codificação cautelosa
descuidada
Código feio e sem Código limpo
estrutura
Pouca manutenção, Evolução constante
descartável
Feito por um usuário Feito por um ou mais
programadores
4. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Criando um Script.
– A primeira linha do script(arquivo) deverá
ser: #!/bin/bash
Prof. Tarcísio Franco
– O arquivo tem que ser executável:
chmod +x script.sh ; ./script.sh
EX.: De vez em quando é necessário saber
das horas, uso do disco e quem está
conectado a máquina. Criar um script
que junte tudo isso.
5. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Variáveis: basta usar o sinal “=”
$ VARIAVEL=”sim”
– Para obter o conteúdo da variável usá-se:
Prof. Tarcísio Franco
$ echo $VARIAVEL
OBS: unset apaga a variavel
Pode-se inserir a saída de um comando em
uma variável:
$ HOJE=$(date) ; echo “Hoje é: $HOJE”
Expressões aritméticas: $((...))
Echo $((2*3)) ; NUM=2 ; NUM=echo $((NUM+2))
6. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Argumentos: dados via linha de
comando
– $0 : nome do script
– $1,$2... : primeiro, segundo...
Prof. Tarcísio Franco
Argumentos
– $* : todos argumentos
Comandos:
• read: faz a leitura que o usuario digitou
e guarda em uma variável.
$ read RESPOSTA
$ echo $RESPOSTA
7. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Test: consegue fazer vários tipos de
testes em números, textos e arquivos.
$ test $VARIAVEL = “sim” && echo “cont...”
obs: && - só executa o segundo comando caso o
Prof. Tarcísio Franco
primeiro tenha sido OK. O operador inverso é
o ||
Outra maneira é:
$ [ $VARIAVEL = “sim” ] && echo “cont...”
8. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Testes em variáveis
OPÇÃO DESCRIÇÃO
-lt Número é menor que (LessThan)
-gt Número é maior que (GreaterThan)
Prof. Tarcísio Franco
-le Número é menor igual (LessEqual)
-ge Número é maior igual m(GreaterEqual)
-eq Número é igual (EQual)
-ne Número é diferente (NotEqual)
= String é igual
!= String é diferente
-n String é não nula
-z String é nula
9. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Testes em arquivos
Opção Descrição
-d É um diretório
-f É um arquivo
Prof. Tarcísio Franco
-r O arquivo tem permissão
de leitura
-s O tamanho do arquivo é
maior que zero
-w Oarquivo tem permissao
de escrita
-nt O arquivo é mais recente
(NewerThan)
-ot O arquivo é mais
antigo(OlderThan)
-ef O arquivo é o
mesmo(EqualFile)
10. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• if: diferentes de outras linguagens, o if testa um
comando e não uma condição.
if COMANDO
then
COMANDOS
Prof. Tarcísio Franco
else
COMANDOS
fi
Ex.: saber se uma variável é maior ou menor do que 10
if test $VAR –gt 10
then
echo “É maior que 10”
else
echo “É menor que 10”
11. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Também pode-se fazer por um atalho para
ficar mais parecido com o formato
tradicional.
Prof. Tarcísio Franco
Ex.: saber se uma variável é maior ou menor do
que 10
if [ “$VAR” –gt 10 ]
then
echo “É maior que 10”
else
echo “É menor que 10”
12. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• for: percorre uma lista de palavras,
pegando uma por vez.
for VAR in LISTA
do
Prof. Tarcísio Franco
COMANDOS
done
Ex.:
for numero in um dois tres quatro cinco
do
echo “Contando: $numero”
done
13. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• while: é um laço que é executado
enquanto um comando retorna OK.
while COMANDOS
do
Prof. Tarcísio Franco
comandos
done
Ex.:
while test $numero –le 10
do
numero=$((numero+1))
echo “Contando: $numero”
done
14. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Case: evita o aninhamento de if's
case VARIAVEL in
opcao)
Prof. Tarcísio Franco
…
;;
opcao 1|opcao 2)
…
;;
esac
15. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
• Case:
Ex.:
case $op in
Prof. Tarcísio Franco
-h|--help)
echo "$op"
;;
-v)
echo "$op"
;;
esac
16. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell script
1) Mostrar todos os usuários que estão no
arquivo /etc/passwd com seus nomes completos
(campos 1 e 5)
2) Recebe dois números como parâmetros e
Prof. Tarcísio Franco
mostra qual a relação entre eles
Ex.: $relacao.sh 3 5
3 é menor que 5
3) Recebe um número como parâmetro e o
diminui até chegar a zero, mostrando na tela
cada passo.
Ex.: $zerador.sh 5
543210
17. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell script
1)
#!/bin/bash
cat /etc/passwd | cut –d : -f 1,5
2)
Prof. Tarcísio Franco
#!/bin/bash
If test $1 –eq $2 then
Echo “$1 é igual $2”
elif test $1 –lt $2 then
Echo “$1 é menor que $2”
Else
Echo “$1 é maior que $2”
fi
3)
#!/bin/bash
i=$1
While test –ge 0 do
echo –n “$i”
i=$((i-1))
Done
Echo
18. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Controle de qualidada, deixando o código
mais amigável:
Cabeçalho inicial
Prof. Tarcísio Franco
Código alinhado
Comentários
Nomes descritivos
Controle de alterações de versões
19. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Cabeçalho Inicial
− Informar do que se trata o programa
para outro programador saber o que
Prof. Tarcísio Franco
faz, e como faz.
# Este seria um início de cabeçalho
# com mais de uma linha
20. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Cabeçalho Inicial (sugestão de um
cabeçalho informativo)
− Localização (path) do interpretador.
Prof. Tarcísio Franco
− Nome do programa
− Descrição breve do propósito / site
− Nome autor
− E-mail do autor
− Data criação
− Histórico de mudanças
21. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Código alinhado
dialog –-title “Título da Caixa” –-msgbox “Esta é a
mensagem” 0 0
Pode ficar assim:
Prof. Tarcísio Franco
-
dialog
–-title “Título da Caixa”
–-msgbox “Esta é a mensagem”
00
22. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
Comentários
− Comentários de uma linha:
# Converter o email para maiúsculo
Prof. Tarcísio Franco
echo “$email” | tr a-z A-Z
- Comentários de meia linha:
echo “$email” # Mostra o email na tela
23. UESPI – Universidade Estadual do Piauí - OPTATIVA I
Shell Script
A três tipos de especiais de comentários
em todas as linguagens de programação:
Prof. Tarcísio Franco
TODO Indica uma tarefa a ser feita, uma pendência ainda não resolvida.
#TODO Colocar este trecho em uma função
FIXME Indica um bug conhecido, que precisa ser arrumado.
#FIXME Este loop não funciona com números negativos
XXX Chama a atenção, é um recado ou uma notícia imoprtante.
#XXX Tenho que alterar esta função para retornar inteiro