Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa 
Apresentadores: Igor Rafael da Rocha 
Luís Ed...
Apresentadores 
Igor Rafael da Rocha 
Luís Eduardo Tenório da Silva 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com...
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros P...
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros P...
Introdução 
O que é shell? 
•Programa que permite ao usuário interagir com o Sistema Operacional(SO) através de comandos d...
Introdução 
Tipos de shell 
•bash (Bourne Again Shell) 
•sh (Bourne Shell) 
•ksh (Korn Shell) 
•csh (C Shell) 
•zsh (Z she...
Introdução 
O que é shell script? 
“ Linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, d...
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros P...
Shell Script 
Primeiro Programa 
#!/bin/bash 
echo -e “Hello World!” 
•Terminal: 
▫chmod +x hello.sh 
▫./hello.sh 
IF-AL i...
Shell Script 
SheBang 
•Refere-se aos caracteres #!, quando os mesmos são os primeiros caracteres em um arquivo. Utilizado...
Shell Script 
Comando echo 
•Imprime texto na saída do shell 
• -e: interpreta caracteres de escape 
•Obs: 
▫“” –Interpret...
Shell Script 
Variáveis 
•Definição 
▫NOME=valor 
•Acesso: 
▫$NOME 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com ...
Shell Script 
Variáveis especiais 
•$0- Nome do script em execução 
•$1-$9- Parâmetros posicionais 
•${10} ...- Parâmetros...
Shell Script 
Tipos de Variáveis 
•Em shell-script as variáveis não são tipadas, mas podemos limitar a atribuição de tipos...
Shell Script 
Comando read 
•Recebe entrada do usuário e guarda em uma variável 
•Sintaxe 
▫read VARIABLE 
IF-AL igorlogos...
Shell Script 
Comentários 
•Linhas que serão ignoradas pelo interpretador. Utilizado para descrever a lógica ou algum coma...
Shell Script 
Parâmetros Posicionais 
•Argumentos que são passados na linha de comando quando invocado um script. 
•Sintax...
Shell Script 
Status de Término (exit) 
•Todo script ao ser executado retorna um valor que identifica o status do mesmo. R...
Shell Script 
Status de Término (exit) 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
19 
Exit Code Number 
Signi...
Shell Script 
Estrutura de Condição 
•If...Else 
•If...Elif...Else 
•Case 
IF-AL igorlogos@gmail.com | eduardovansilva@gma...
Shell Script 
If...Else 
•Sintaxe: 
if [ OPTION(s) ];then 
CONDITION 
else 
CONDITION 
IF-AL igorlogos@gmail.com | eduardo...
Shell Script 
If...Elif...Else 
•Sintaxe: 
if [ OPTION(s) ];then 
CONDITION 
elif [ OPTION(s) ];then 
CONDITION 
else 
CON...
Shell Script 
Tabela de opções 
•Comparativos de números: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
23 
Oper...
Shell Script 
Tabela de opções 
•Comparativos de strings: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
24 
Oper...
Shell Script 
Tabela de opções 
•Expressões: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
25 
Operação 
Signifi...
Shell Script 
Tabela de opções 
•Operações com arquivos : 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
26 
Oper...
Shell Script 
Case 
•Sintaxe: 
case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command....
Shell Script 
Estrutura de Repetição 
•For 
•While 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
28
Shell Script 
For 
•Sintaxe: 
for (( c=1; c<=5; c++ )); do 
command 
done 
•Sintaxe 2 
for VARIABLE in VALUE_LIST; do 
com...
Shell Script 
For 
•Sintaxe: 
while [ condition ];do command(s)... 
done 
IF-AL igorlogos@gmail.com | eduardovansilva@gmai...
Shell Script 
Funções 
•Sub-rotinas (bloco de código) que implementa um conjunto de operações e executa uma tarefa específ...
Shell Script 
Funções 
•Devem ser declaradas antes de suas chamadas 
•Não podem estarem vazias 
•Podem ser criadas dentro ...
Shell Script 
Funções 
•Como passar argumentos para funções? 
R:Utilizando parâmetros posicionais. 
•Como retornar valores...
Shell Script 
Redirecionadores 
Canais do Shell 
•stdin: Entrada padrão 
•stdout: Saída padrão 
•stderr: Saída padrã de er...
Shell Script 
Redirecionadores 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
35
Shell Script 
Redirecionadores 
•> - redireciona saída padrão para um arquivo, removendo-o caso exista. 
•>>- redireciona ...
Shell Script 
Redirecionadores 
•Dispositivos especiais 
▫/dev/null 
▫/dev/zero 
▫/dev/random 
IF-AL igorlogos@gmail.com |...
Shell Script 
Arrays 
•Declaração 
▫name=( value0 value1 value2 “value3") 
▫name[1]=value1 
▫declare -a variable 
IF-AL ig...
Shell Script 
Arrays 
•Acesso 
▫${name[1]} 
•Retornar todos os elementos do array 
▫${vetor[@]} 
▫${vetor[*]} 
•Tamanho do...
Shell Script 
Pipes 
•Forma de comunicação interprocessos onde a saída de um comando serve de entrada para outro comando 
...
Shell Script 
Processamento de texto 
•Sed 
•Awk 
•Grep 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
41
Shell Script 
Processamento de texto(sed) 
•Editor de fluxo (Stream editor) 
•Muito utilizado em sistemas Unix 
•Trabalha ...
Shell Script 
Processamento de texto(awk) 
•Linguagem de programação para processamento de dados baseados em texto 
•Sinta...
Shell Script 
Processamento de texto(grep) 
•aplicativo que faz buscas procurando linhas que respeitem a expressão regular...
Shell Script 
Algumas Dicas 
•Utilize comentários 
•Evitar o uso de números mágicos 
•Nomes descritivos para variáveis e f...
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros P...
Dialog 
Introdução 
•O que é o Dialog 
“O Dialog é um programa para console (modo texto) que desenha caixas de diálogo na ...
Dialog 
Tipos de caixa 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
48
Dialog 
Calendar 
dialog 
--title 'Escolha a data'  
--calendar ''  
0 0  
31 12 1999 
IF-AL igorlogos@gmail.com | eduardo...
Dialog 
Checklist 
dialog 
--title 'Seleção dos Componentes'  
--checklist 'O que você quer instalar?'  0 0 0  
syntax 'Ar...
Dialog 
Fselect 
dialog 
--title 'Escolha onde instalar'  
--fselect /usr/share/vim/  
0 0 
IF-AL igorlogos@gmail.com | ed...
Dialog 
Gauge 
dialog 
--title 'Instalação dos Pacotes'  
--gauge 'nInstalando Vim-6.0a.tgz...'  8 40 60 
IF-AL igorlogos@...
Dialog 
Infobox 
dialog 
--title 'Aguarde'  
--infobox 'n 
Finalizando em 5 segundos...'  
0 0 
IF-AL igorlogos@gmail.com ...
Dialog 
Inputbox, Passwordbox 
dialog 
--title 'Confirmação'  
--passwordbox 'Por favor, confirme a senha:'  
0 0 
IF-AL i...
Dialog 
Menu 
dialog 
--title 'Perfil'  
--menu 'Escolha o perfil da instalação:'  0 0 0  
mínima 'Instala o mínimo'  
com...
Dialog 
Msgbox 
dialog 
--title 'Parabéns'  
--msgbox 'Instalação finalizada com sucesso.'  
6 40 
IF-AL igorlogos@gmail.c...
Dialog 
Radiolist 
dialog 
--title 'Pergunta'  
--radiolist 'Há quanto tempo você usa o Vi?'  
0 0 0  
iniciante 'até 1 an...
Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
58 
Tailbox, Tailboxbg 
dialog 
--title 'Monitorando Mensag...
Dialog 
Textbox 
dialog 
--title 'Visualizando Arquivo'  
--textbox/usr/share/vim/vim60/indent.vim  
0 0 
IF-AL igorlogos@...
Dialog 
Timebox 
dialog 
--title 'Ajuste o Relógio'  
--timebox 'nDICA: Use as setas e o TAB.'  0 0  23 59 30 
IF-AL igorl...
Dialog 
Yesno 
dialog 
--title 'AVISO'  
--yesno 'n 
O Vi foi instalado e configurado. 
Você quer executá-lo agora?nn'  
0...
Dialog 
Funcionamento do Dialog 
•Os tipos de caixa apresentam alguma idéia de como funciona o Dialog ? De quais são suas ...
Dialog 
Funcionamento do Dialog 
•Parâmetros obrigatórios 
O formato de implementação mínimo e genérico do Dialog é : 
dia...
Dialog 
Funcionamento do Dialog 
•Aprenderemos algumas características do Dialog como: 
▫Usa código de retorno para botões...
Dialog 
Funcionamento do Dialog 
•Como manipular esses retornos em scripts ? 
Pode-se criar uma estrutura simples com if e...
Dialog 
Funcionamento do Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
66
Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
67
Referências 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
68
Próximos SlideShares
Carregando em…5
×

Minicurso Shell Script

587 visualizações

Publicada em

Minicurso ministrado por Igor Rafael e Luís Eduardo no Encontro de Iniciação Científica realizado no Instituto Federal de Alagoas (IFAL).

Publicada em: Tecnologia
2 comentários
4 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
587
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
59
Comentários
2
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso Shell Script

  1. 1. Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa Apresentadores: Igor Rafael da Rocha Luís Eduardo Tenório Silva
  2. 2. Apresentadores Igor Rafael da Rocha Luís Eduardo Tenório da Silva IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 2
  3. 3. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 3
  4. 4. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 4
  5. 5. Introdução O que é shell? •Programa que permite ao usuário interagir com o Sistema Operacional(SO) através de comandos digitados do teclado. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 5
  6. 6. Introdução Tipos de shell •bash (Bourne Again Shell) •sh (Bourne Shell) •ksh (Korn Shell) •csh (C Shell) •zsh (Z shell) •Como saber o shell que estou utilizando? ▫echo $SHELL IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 6
  7. 7. Introdução O que é shell script? “ Linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado(shell).” Wikipédia IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 7
  8. 8. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 8
  9. 9. Shell Script Primeiro Programa #!/bin/bash echo -e “Hello World!” •Terminal: ▫chmod +x hello.sh ▫./hello.sh IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 9
  10. 10. Shell Script SheBang •Refere-se aos caracteres #!, quando os mesmos são os primeiros caracteres em um arquivo. Utilizado para identificar o tipo de interpretador que será utilizado no programa. •Ex: ▫#!/bin/bash ▫#!/bin/sh ▫#!/bin/perl ▫#!/bin/python IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 10
  11. 11. Shell Script Comando echo •Imprime texto na saída do shell • -e: interpreta caracteres de escape •Obs: ▫“” –Interpreta variáveis (aspas duplas) ▫„‟ – Não interpreta variáveis (aspas simples) ▫`` - Interpreta comandos (crases) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 11
  12. 12. Shell Script Variáveis •Definição ▫NOME=valor •Acesso: ▫$NOME IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 12
  13. 13. Shell Script Variáveis especiais •$0- Nome do script em execução •$1-$9- Parâmetros posicionais •${10} ...- Parâmetros posicionais •$#- Número de parâmetros passados •$$- PID •$?- Valor de retorno IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 13
  14. 14. Shell Script Tipos de Variáveis •Em shell-script as variáveis não são tipadas, mas podemos limitar a atribuição de tipos a variáveis com o comando declare •Sintaxe: ▫declare <OPTION(S)> <VARIABLE>=<value> •Options: ▫-a : Array ▫-f : Função ▫-i : Inteiro ▫-r : Somente leitura (constante) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 14
  15. 15. Shell Script Comando read •Recebe entrada do usuário e guarda em uma variável •Sintaxe ▫read VARIABLE IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 15
  16. 16. Shell Script Comentários •Linhas que serão ignoradas pelo interpretador. Utilizado para descrever a lógica ou algum comando utilizado. •Sintaxe: ▫# IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 16
  17. 17. Shell Script Parâmetros Posicionais •Argumentos que são passados na linha de comando quando invocado um script. •Sintaxe: ▫$1...$9 ▫${10} …. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 17
  18. 18. Shell Script Status de Término (exit) •Todo script ao ser executado retorna um valor que identifica o status do mesmo. Retorna um valor entre 0 e 255. •Sintaxe: ▫exit <NUMBER> IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 18
  19. 19. Shell Script Status de Término (exit) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 19 Exit Code Number Significado 0 Script executado com sucesso 1 Erros Gerais 2 Uso indevíduo do shell 126 Comando não pode ser executado 127 Comando não encontrado 128 Argumento inválido para exit 128 +n Erro Fatal +sinal “n” 130 Finalizado com Ctrl +c 255* Fora do intervalo
  20. 20. Shell Script Estrutura de Condição •If...Else •If...Elif...Else •Case IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 20
  21. 21. Shell Script If...Else •Sintaxe: if [ OPTION(s) ];then CONDITION else CONDITION IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 21
  22. 22. Shell Script If...Elif...Else •Sintaxe: if [ OPTION(s) ];then CONDITION elif [ OPTION(s) ];then CONDITION else CONDITION IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 22
  23. 23. Shell Script Tabela de opções •Comparativos de números: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 23 Operação Significado $a -lt $b Menor que (less than) $a -le $b Menor ou igual (less or equal) $a -gt $b Maior que (greater than) $a -ge $b Maior ou igual (greater or equal) $a -eq $b Igual (equal)
  24. 24. Shell Script Tabela de opções •Comparativos de strings: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 24 Operação Significado [ -z STRING ] Verifica se string possui comprimento zero [ -n STRING] ou [ STRING ] Verifica se string não possui comprimento zero [ STRING1 == STRING2 ] Verifica se strings são iguais [ STRING1 != STRING2 ] Verifica se strings são diferentes [ STRING1 < STRING2 ] Verifica se STRING1 é menor que STRING2 [ STRING1 > STRING2 ] Verifica se STRING1 é maior que STRING2
  25. 25. Shell Script Tabela de opções •Expressões: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 25 Operação Significado [ !EXPR ] Negação do valor da expressão ( verdade se EXPR falso) [ (EXPR) ] Precedência [ EXPR1 -a EXPR2 ] ou [ EXPR1 && EXPR2 ] Tabela and [ EXPR1 -o EXPR2 ] ou [ EXPR1 || EXPR2 ] Tabela or
  26. 26. Shell Script Tabela de opções •Operações com arquivos : IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 26 Operação Significado [ -e ARQ ] Verdadeiro se ARQ existe. [ -d ARQ ] Verdadeiro se ARQ existe e se é diretório. [ -r ARQ ] Verdadeiro se ARQ existe e se é legível. [ -w ARQ ] Verdadeiro se ARQ existe e se tem permissão de escrita. [ -x ARQ ] Verdadeiro se ARQ existe e se é executável [ -z ARQ ] Verdadeiro se ARQ estiver vazio
  27. 27. Shell Script Case •Sintaxe: case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 27
  28. 28. Shell Script Estrutura de Repetição •For •While IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 28
  29. 29. Shell Script For •Sintaxe: for (( c=1; c<=5; c++ )); do command done •Sintaxe 2 for VARIABLE in VALUE_LIST; do command done IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 29
  30. 30. Shell Script For •Sintaxe: while [ condition ];do command(s)... done IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 30
  31. 31. Shell Script Funções •Sub-rotinas (bloco de código) que implementa um conjunto de operações e executa uma tarefa específica. •Sintaxe: function_name () { command... } •Chamada: function_name IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 31
  32. 32. Shell Script Funções •Devem ser declaradas antes de suas chamadas •Não podem estarem vazias •Podem ser criadas dentro de outras funções (embora inútil) •Podem ser declaradas com “nomes estranhos” ( _ , : , %) •Uma mesma função pode ser definida varias vezes, porém a ultima versão é a que é invocada IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 32
  33. 33. Shell Script Funções •Como passar argumentos para funções? R:Utilizando parâmetros posicionais. •Como retornar valores? R: três formas ▫exit n (apenas inteiros) ▫return n (apenas inteiros) ▫echo “n” (strings) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 33
  34. 34. Shell Script Redirecionadores Canais do Shell •stdin: Entrada padrão •stdout: Saída padrão •stderr: Saída padrã de erro IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 34
  35. 35. Shell Script Redirecionadores IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 35
  36. 36. Shell Script Redirecionadores •> - redireciona saída padrão para um arquivo, removendo-o caso exista. •>>- redireciona saída padrão para um arquivo, adicionando-a no final do arquivo. •< - redireciona a entrada padrão para um arquivo •2>- redireciona saída de erro padrão para um arquivo, removendo-o caso exista. •2>> - redireciona saída de erro padrão para um arquivo, adicionando-a no final do arquivo. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 36
  37. 37. Shell Script Redirecionadores •Dispositivos especiais ▫/dev/null ▫/dev/zero ▫/dev/random IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 37
  38. 38. Shell Script Arrays •Declaração ▫name=( value0 value1 value2 “value3") ▫name[1]=value1 ▫declare -a variable IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 38
  39. 39. Shell Script Arrays •Acesso ▫${name[1]} •Retornar todos os elementos do array ▫${vetor[@]} ▫${vetor[*]} •Tamanho do array ▫${#vetor[@]} ▫${#vetor[*]} •Adicionando itens ▫vetor=(${vetor[@]} "$elem") ▫vetor=(${vetor[*]} "$elem") •Removendo itens ▫unset vetor[1] IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 39
  40. 40. Shell Script Pipes •Forma de comunicação interprocessos onde a saída de um comando serve de entrada para outro comando •Sintaxe: ▫Command1 | Command2 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 40
  41. 41. Shell Script Processamento de texto •Sed •Awk •Grep IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 41
  42. 42. Shell Script Processamento de texto(sed) •Editor de fluxo (Stream editor) •Muito utilizado em sistemas Unix •Trabalha com o conceito de expressões regulares •Sintaxe: ▫sed „commad‟ file(s) •Alguns comandos ▫s/TEXT1/TEXT2/ -substitui TEXT1 por TEXT2 ▫/d – deleta linhas ou entradas IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 42
  43. 43. Shell Script Processamento de texto(awk) •Linguagem de programação para processamento de dados baseados em texto •Sintaxe: ▫awk „pattern{action}‟ file(s) •Alguns comandos ▫{print $1} – Imprime o primeiro campo ▫{print $1”t”$3} - Imprime o primeiro e terceiro campo separando-os com uma tabulação IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 43
  44. 44. Shell Script Processamento de texto(grep) •aplicativo que faz buscas procurando linhas que respeitem a expressão regular mencionada. •Sintaxe: ▫grep [OPTIONS] PATTERN [FILE...] •Exemplos ▫qrep aluno /etc/passwd – mostra todas as linhas que contem a palavra aluno no arquivo /etc/passwd IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 44
  45. 45. Shell Script Algumas Dicas •Utilize comentários •Evitar o uso de números mágicos •Nomes descritivos para variáveis e funções •Utilize exit de forma sistemática e significativa •Quebrar scripts complexos em partes mais simples(utilizando funções) •Evite redundâncias IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 45
  46. 46. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 46
  47. 47. Dialog Introdução •O que é o Dialog “O Dialog é um programa para console (modo texto) que desenha caixas de diálogo na tela, similares as do modo gráfico, com botões, entradas para texto e menu” AURELIO, M. J. ▫Parâmetros via linha de comando; ▫Interatividade = usuário precisa operar durante a execução; ▫Semelhança com programas gráficos; ▫Útil para logins registros ; ▫Prático para iniciantes ; ▫Várias versões até a atual ; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 47
  48. 48. Dialog Tipos de caixa IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 48
  49. 49. Dialog Calendar dialog --title 'Escolha a data' --calendar '' 0 0 31 12 1999 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 49
  50. 50. Dialog Checklist dialog --title 'Seleção dos Componentes' --checklist 'O que você quer instalar?' 0 0 0 syntax 'Arquivos de sintaxe' on mouse 'Suporte a mouse' off color 'Suporte a cores' on beep 'Driver avançado de som' off IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 50
  51. 51. Dialog Fselect dialog --title 'Escolha onde instalar' --fselect /usr/share/vim/ 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 51
  52. 52. Dialog Gauge dialog --title 'Instalação dos Pacotes' --gauge 'nInstalando Vim-6.0a.tgz...' 8 40 60 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 52
  53. 53. Dialog Infobox dialog --title 'Aguarde' --infobox 'n Finalizando em 5 segundos...' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 53
  54. 54. Dialog Inputbox, Passwordbox dialog --title 'Confirmação' --passwordbox 'Por favor, confirme a senha:' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 54
  55. 55. Dialog Menu dialog --title 'Perfil' --menu 'Escolha o perfil da instalação:' 0 0 0 mínima 'Instala o mínimo' completa 'Instala tudo' customizada 'Você escolhe' IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 55
  56. 56. Dialog Msgbox dialog --title 'Parabéns' --msgbox 'Instalação finalizada com sucesso.' 6 40 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 56
  57. 57. Dialog Radiolist dialog --title 'Pergunta' --radiolist 'Há quanto tempo você usa o Vi?' 0 0 0 iniciante 'até 1 ano' on experiente 'mais de 1 ano' off guru 'mais de 3 anos' off IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 57
  58. 58. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 58 Tailbox, Tailboxbg dialog --title 'Monitorando Mensagens do Sistema' --tailbox out 0 0
  59. 59. Dialog Textbox dialog --title 'Visualizando Arquivo' --textbox/usr/share/vim/vim60/indent.vim 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 59
  60. 60. Dialog Timebox dialog --title 'Ajuste o Relógio' --timebox 'nDICA: Use as setas e o TAB.' 0 0 23 59 30 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 60
  61. 61. Dialog Yesno dialog --title 'AVISO' --yesno 'n O Vi foi instalado e configurado. Você quer executá-lo agora?nn' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 61
  62. 62. Dialog Funcionamento do Dialog •Os tipos de caixa apresentam alguma idéia de como funciona o Dialog ? De quais são suas principais funcionalidades ? •Simples de usar , pode assustar um pouco nas primeiras tentativas, por possuir uma sintaxe diferente de outros programas utilizados pelo shell ; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 62
  63. 63. Dialog Funcionamento do Dialog •Parâmetros obrigatórios O formato de implementação mínimo e genérico do Dialog é : dialog --tipo-da-caixa '<texto>' <altura> <largura> tipo da caixa -> nome do tipo de caixa que se deseja utilizar; texto -> O texto é a palavra ou frase que aparece no início da caixa, logo após a primeira linha (borda superior). Passe uma string vazia '' caso não deseje texto. altura -> A altura é o número de linhas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas superior e inferior. largura -> A largura é o número de colunas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas esquerda e direita. •Quebra de linha automática (uso do (n) desnecessário); •Usando “0 0”(zero zero) para altura e largura = reajuste automático do tamanho da caixa; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 63
  64. 64. Dialog Funcionamento do Dialog •Aprenderemos algumas características do Dialog como: ▫Usa código de retorno para botões Sim/Não, Ok/Cancel ▫Usa a saída de erro (STDERR) para textos e itens escolhidos •Uma das caixas mais utilizadas do Dialog é a Yesno (sim,não), que dá opções ao usuário de confirmar ou negar uma escolha, mas como : Saber qual foi a escolha do usuário ? O Dialog utiliza o código de retorno ("Return Code") para informar qual foi o botão apertado. Como sabemos, o shell guarda esse código dentro da variável $?. Com um teste simples na linha de comando , verificamos o valor que pode ser 0 (zero) ou 1, segue abaixo : dialog --yesno 'sim ou não?' 0 0 ; echo Retorno: $? Se o retorno for 0(zero) o usuário escolheu sim , se 1 escolheu não; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 64 Memorizando -> SIM=0|NÃO=1
  65. 65. Dialog Funcionamento do Dialog •Como manipular esses retornos em scripts ? Pode-se criar uma estrutura simples com if e else para lidar com os retornos , segue abaixo um exemplo : dialog --yesno 'Quer saber o usuário logado ?' 0 0 if [ $? = 0 ]; then echo "Agora são: $( date )" else echo 'Ok, não vou mostrar as horas.‘ fi Esse exemplo pode ser minimizado, se não for necessário o else, passando a ser : dialog --yesno 'Quer ver as horas?' 0 0 && echo "Agora são: $(date)" IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 65
  66. 66. Dialog Funcionamento do Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 66
  67. 67. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 67
  68. 68. Referências IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 68

×