minicurso shell script
DESCRIPTION
Minicurso ministrado por Igor Rafael e Luís Eduardo no Encontro de Iniciação Científica realizado no Instituto Federal de Alagoas (IFAL).TRANSCRIPT
![Page 1: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/1.jpg)
Minicurso:Desenvolvendo aplicações
em Shell Script com interface
interativa
Apresentadores: Igor Rafael da Rocha
Luís Eduardo Tenório Silva
![Page 2: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/2.jpg)
Apresentadores
Igor Rafael da Rocha
Luís Eduardo Tenório da Silva
IF-AL [email protected] | [email protected]
2
![Page 3: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/3.jpg)
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 [email protected] | [email protected]
3
![Page 4: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/4.jpg)
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 [email protected] | [email protected]
4
![Page 5: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/5.jpg)
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 [email protected] | [email protected]
5
![Page 6: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/6.jpg)
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 [email protected] | [email protected]
6
![Page 7: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/7.jpg)
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 [email protected] | [email protected]
7
![Page 8: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/8.jpg)
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 [email protected] | [email protected]
8
![Page 9: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/9.jpg)
Shell Script
Primeiro Programa
#!/bin/bash
echo -e “Hello World!”
• Terminal:
▫ chmod +x hello.sh
▫ ./hello.sh
IF-AL [email protected] | [email protected]
9
![Page 10: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/10.jpg)
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 [email protected] | [email protected]
10
![Page 11: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/11.jpg)
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 [email protected] | [email protected]
11
![Page 12: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/12.jpg)
Shell Script
Variáveis
• Definição ▫ NOME=valor
• Acesso: ▫ $NOME
IF-AL [email protected] | [email protected]
12
![Page 13: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/13.jpg)
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 [email protected] | [email protected]
13
![Page 14: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/14.jpg)
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 [email protected] | [email protected]
14
![Page 15: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/15.jpg)
Shell Script
Comando read
• Recebe entrada do usuário e guarda em uma variável
• Sintaxe ▫ read VARIABLE
IF-AL [email protected] | [email protected]
15
![Page 16: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/16.jpg)
Shell Script
Comentários
• Linhas que serão ignoradas pelo interpretador. Utilizado para descrever a lógica ou algum comando utilizado.
• Sintaxe:
▫ #
IF-AL [email protected] | [email protected]
16
![Page 17: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/17.jpg)
Shell Script
Parâmetros Posicionais
• Argumentos que são passados na linha de comando quando invocado um script.
• Sintaxe: ▫ $1...$9
▫ ${10} ….
IF-AL [email protected] | [email protected]
17
![Page 18: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/18.jpg)
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 [email protected] | [email protected]
18
![Page 19: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/19.jpg)
Shell Script
Status de Término (exit)
IF-AL [email protected] | [email protected]
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
![Page 20: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/20.jpg)
Shell Script
Estrutura de Condição
• If...Else
• If...Elif...Else
• Case
IF-AL [email protected] | [email protected]
20
![Page 21: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/21.jpg)
Shell Script
If...Else
• Sintaxe:
if [ OPTION(s) ];then
CONDITION
else
CONDITION
IF-AL [email protected] | [email protected]
21
![Page 22: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/22.jpg)
Shell Script
If...Elif...Else
• Sintaxe:
if [ OPTION(s) ];then
CONDITION
elif [ OPTION(s) ];then
CONDITION
else
CONDITION
IF-AL [email protected] | [email protected]
22
![Page 23: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/23.jpg)
Shell Script
Tabela de opções
• Comparativos de números:
IF-AL [email protected] | [email protected]
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)
![Page 24: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/24.jpg)
Shell Script
Tabela de opções
• Comparativos de strings:
IF-AL [email protected] | [email protected]
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
![Page 25: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/25.jpg)
Shell Script
Tabela de opções
• Expressões:
IF-AL [email protected] | [email protected]
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
![Page 26: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/26.jpg)
Shell Script
Tabela de opções
• Operações com arquivos :
IF-AL [email protected] | [email protected]
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
![Page 27: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/27.jpg)
Shell Script
Case • Sintaxe: case "$variable" in
"$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac
IF-AL [email protected] | [email protected]
27
![Page 29: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/29.jpg)
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 [email protected] | [email protected]
29
![Page 30: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/30.jpg)
Shell Script
For
• Sintaxe:
while [ condition ];do command(s)...
done
IF-AL [email protected] | [email protected]
30
![Page 31: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/31.jpg)
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 [email protected] | [email protected]
31
![Page 32: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/32.jpg)
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 [email protected] | [email protected]
32
![Page 33: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/33.jpg)
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 [email protected] | [email protected]
33
![Page 34: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/34.jpg)
Shell Script
Redirecionadores
Canais do Shell • stdin: Entrada padrão • stdout: Saída padrão • stderr: Saída padrã de erro
IF-AL [email protected] | [email protected]
34
![Page 36: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/36.jpg)
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 [email protected] | [email protected]
36
![Page 37: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/37.jpg)
Shell Script
Redirecionadores
• Dispositivos especiais ▫ /dev/null
▫ /dev/zero
▫ /dev/random
IF-AL [email protected] | [email protected]
37
![Page 38: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/38.jpg)
Shell Script
Arrays
• Declaração ▫ name=( value0 value1 value2 “value3")
▫ name[1]=value1
▫ declare -a variable
IF-AL [email protected] | [email protected]
38
![Page 39: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/39.jpg)
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 [email protected] | [email protected]
39
![Page 40: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/40.jpg)
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 [email protected] | [email protected]
40
![Page 41: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/41.jpg)
Shell Script
Processamento de texto
• Sed
• Awk
• Grep
IF-AL [email protected] | [email protected]
41
![Page 42: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/42.jpg)
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 [email protected] | [email protected]
42
![Page 43: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/43.jpg)
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 [email protected] | [email protected]
43
![Page 44: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/44.jpg)
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 [email protected] | [email protected]
44
![Page 45: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/45.jpg)
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 [email protected] | [email protected]
45
![Page 46: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/46.jpg)
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 [email protected] | [email protected]
46
![Page 47: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/47.jpg)
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 [email protected] | [email protected]
47
![Page 49: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/49.jpg)
Dialog
Calendar
dialog\ --title 'Escolha a data' \ --calendar '' \ 0 0 \ 31 12 1999
IF-AL [email protected] | [email protected]
49
![Page 50: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/50.jpg)
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 [email protected] | [email protected]
50
![Page 51: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/51.jpg)
Dialog
Fselect dialog\ --title 'Escolha onde instalar' \ --fselect /usr/share/vim/ \
0 0
IF-AL [email protected] | [email protected]
51
![Page 52: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/52.jpg)
Dialog
Gauge dialog\ --title 'Instalação dos Pacotes' \ --gauge '\nInstalando Vim-6.0a.tgz...' \ 8 40 60
IF-AL [email protected] | [email protected]
52
![Page 53: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/53.jpg)
Dialog Infobox dialog\ --title 'Aguarde' \ --infobox '\n Finalizando em 5 segundos...' \ 0 0
IF-AL [email protected] | [email protected]
53
![Page 54: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/54.jpg)
Dialog Inputbox, Passwordbox dialog\ --title 'Confirmação' \ --passwordbox 'Por favor, confirme a senha:' \ 0 0
IF-AL [email protected] | [email protected]
54
![Page 55: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/55.jpg)
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 [email protected] | [email protected]
55
![Page 56: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/56.jpg)
Dialog
Msgbox dialog\ --title 'Parabéns' \ --msgbox 'Instalação finalizada com sucesso.' \ 6 40
IF-AL [email protected] | [email protected]
56
![Page 57: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/57.jpg)
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 [email protected] | [email protected]
57
![Page 58: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/58.jpg)
Dialog
IF-AL [email protected] | [email protected]
58
Tailbox, Tailboxbg dialog\ --title 'Monitorando Mensagens do Sistema' \ --tailbox out \ 0 0
![Page 59: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/59.jpg)
Dialog
Textbox dialog\ --title 'Visualizando Arquivo' \ --textbox/usr/share/vim/vim60/indent.vim \ 0 0
IF-AL [email protected] | [email protected]
59
![Page 60: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/60.jpg)
Dialog
Timebox dialog\ --title 'Ajuste o Relógio' \ --timebox '\nDICA: Use as setas e o TAB.' \ 0 0 \ 23 59 30
IF-AL [email protected] | [email protected]
60
![Page 61: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/61.jpg)
Dialog Yesno dialog\ --title 'AVISO' \ --yesno '\n O Vi foi instalado e configurado. Você quer executá-lo agora?\n\n' \ 0 0
IF-AL [email protected] | [email protected]
61
![Page 62: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/62.jpg)
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 [email protected] | [email protected]
62
![Page 63: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/63.jpg)
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 [email protected] | [email protected]
63
![Page 64: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/64.jpg)
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 [email protected] | [email protected]
64
Memorizando -> SIM=0|NÃO=1
![Page 65: Minicurso Shell Script](https://reader033.vdocuments.us/reader033/viewer/2022052316/5590b9901a28ab6c258b45aa/html5/thumbnails/65.jpg)
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 [email protected] | [email protected]
65