SlideShare uma empresa Scribd logo
Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa 
Apresentadores: Igor Rafael da Rocha 
Luís Eduardo Tenório Silva
Apresentadores 
Igor Rafael da Rocha 
Luís Eduardo Tenório da Silva 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
2
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
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
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
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
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
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
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
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
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
Shell Script 
Variáveis 
•Definição 
▫NOME=valor 
•Acesso: 
▫$NOME 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
12
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
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
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
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
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
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
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
Shell Script 
Estrutura de Condição 
•If...Else 
•If...Elif...Else 
•Case 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
20
Shell Script 
If...Else 
•Sintaxe: 
if [ OPTION(s) ];then 
CONDITION 
else 
CONDITION 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
21
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
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)
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
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
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
Shell Script 
Case 
•Sintaxe: 
case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
27
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 
command 
done 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
29
Shell Script 
For 
•Sintaxe: 
while [ condition ];do command(s)... 
done 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
30
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
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
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
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
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 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
Shell Script 
Redirecionadores 
•Dispositivos especiais 
▫/dev/null 
▫/dev/zero 
▫/dev/random 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
37
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
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
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
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 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
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
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
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
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
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
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 | eduardovansilva@gmail.com 
49
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
Dialog 
Fselect 
dialog 
--title 'Escolha onde instalar'  
--fselect /usr/share/vim/  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
51
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
Dialog 
Infobox 
dialog 
--title 'Aguarde'  
--infobox 'n 
Finalizando em 5 segundos...'  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
53
Dialog 
Inputbox, Passwordbox 
dialog 
--title 'Confirmação'  
--passwordbox 'Por favor, confirme a senha:'  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
54
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
Dialog 
Msgbox 
dialog 
--title 'Parabéns'  
--msgbox 'Instalação finalizada com sucesso.'  
6 40 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
56
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
Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
58 
Tailbox, Tailboxbg 
dialog 
--title 'Monitorando Mensagens do Sistema'  
--tailbox out  
0 0
Dialog 
Textbox 
dialog 
--title 'Visualizando Arquivo'  
--textbox/usr/share/vim/vim60/indent.vim  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
59
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway Application
Michelle Holley
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
Marco Guimarães
 
OpenvSwitchの落とし穴
OpenvSwitchの落とし穴OpenvSwitchの落とし穴
OpenvSwitchの落とし穴
Takashi Naito
 
NCS: NEtwork Control System Hands-on Labs
NCS:  NEtwork Control System Hands-on Labs NCS:  NEtwork Control System Hands-on Labs
NCS: NEtwork Control System Hands-on Labs
Cisco Canada
 
Course 102: Lecture 16: Process Management (Part 2)
Course 102: Lecture 16: Process Management (Part 2) Course 102: Lecture 16: Process Management (Part 2)
Course 102: Lecture 16: Process Management (Part 2)
Ahmed El-Arabawy
 
Python Network Programming For Network Engineers
Python Network Programming For Network EngineersPython Network Programming For Network Engineers
Python Network Programming For Network Engineers
I Putu Hariyadi
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
Thomas Graf
 
LISA17 Container Performance Analysis
LISA17 Container Performance AnalysisLISA17 Container Performance Analysis
LISA17 Container Performance Analysis
Brendan Gregg
 
Computação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicosComputação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicos
Clayton de Almeida Souza
 
Ccnp enterprise workbook v1.0 completed till weigth
Ccnp enterprise workbook v1.0   completed till weigthCcnp enterprise workbook v1.0   completed till weigth
Ccnp enterprise workbook v1.0 completed till weigth
SagarR24
 
Selinux
SelinuxSelinux
Selinux
Ankit Raj
 
Ospf multiárea para o CCNA
Ospf multiárea para o CCNAOspf multiárea para o CCNA
Ospf multiárea para o CCNA
Vitor Albuquerque
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começou
guestaa94fe
 
Linguagem Assembly
Linguagem AssemblyLinguagem Assembly
Linguagem Assembly
Suzana Viana Mota
 
OpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf TutorialOpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf Tutorial
Saju Madhavan
 
Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01
Ivaldo Cardoso
 
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
MPN Japan
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조
Seung-Hoon Baek
 
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin	Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Vietnam Open Infrastructure User Group
 
Dmvpn with configuration example
Dmvpn with configuration exampleDmvpn with configuration example
Dmvpn with configuration example
3Anetwork com
 

Mais procurados (20)

DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway Application
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
 
OpenvSwitchの落とし穴
OpenvSwitchの落とし穴OpenvSwitchの落とし穴
OpenvSwitchの落とし穴
 
NCS: NEtwork Control System Hands-on Labs
NCS:  NEtwork Control System Hands-on Labs NCS:  NEtwork Control System Hands-on Labs
NCS: NEtwork Control System Hands-on Labs
 
Course 102: Lecture 16: Process Management (Part 2)
Course 102: Lecture 16: Process Management (Part 2) Course 102: Lecture 16: Process Management (Part 2)
Course 102: Lecture 16: Process Management (Part 2)
 
Python Network Programming For Network Engineers
Python Network Programming For Network EngineersPython Network Programming For Network Engineers
Python Network Programming For Network Engineers
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
LISA17 Container Performance Analysis
LISA17 Container Performance AnalysisLISA17 Container Performance Analysis
LISA17 Container Performance Analysis
 
Computação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicosComputação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicos
 
Ccnp enterprise workbook v1.0 completed till weigth
Ccnp enterprise workbook v1.0   completed till weigthCcnp enterprise workbook v1.0   completed till weigth
Ccnp enterprise workbook v1.0 completed till weigth
 
Selinux
SelinuxSelinux
Selinux
 
Ospf multiárea para o CCNA
Ospf multiárea para o CCNAOspf multiárea para o CCNA
Ospf multiárea para o CCNA
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começou
 
Linguagem Assembly
Linguagem AssemblyLinguagem Assembly
Linguagem Assembly
 
OpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf TutorialOpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf Tutorial
 
Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01
 
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
JPC2018[E4]Microsoft Azure ならこうする、こうできる! ~AWS 技術者向け 最新 Microsoft Azure サービス解説...
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조
 
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin	Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
 
Dmvpn with configuration example
Dmvpn with configuration exampleDmvpn with configuration example
Dmvpn with configuration example
 

Destaque

Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
Wanderlei Silva do Carmo
 
Linux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasLinux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e Quotas
Frederico Madeira
 
Shell Script
Shell ScriptShell Script
Shell Script
Wellington Oliveira
 
Shell script
Shell scriptShell script
Shell script
Denis Costa
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
Hugo Maia Vieira
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
Hugo Maia Vieira
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
Frederico Madeira
 
Livro Programação em Shell 8 edição Julio Cézar Nevez
Livro Programação em Shell 8 edição   Julio Cézar NevezLivro Programação em Shell 8 edição   Julio Cézar Nevez
Livro Programação em Shell 8 edição Julio Cézar Nevez
SoftD Abreu
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71
Guilherme Dias
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
Adriano Melo
 
Java Script
Java ScriptJava Script
Java Script
José Lamaison
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Marlon Willrich
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
Lorranna Machado
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
Osvaldo Filho
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
Sérgio Silva
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
Eduardo de Lucena Falcão
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
Fabio Moura Pereira
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11
Renan Boccia
 
Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12
Renan Boccia
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores Linux
Linux Solutions
 

Destaque (20)

Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Linux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasLinux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e Quotas
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Shell script
Shell scriptShell script
Shell script
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
 
Livro Programação em Shell 8 edição Julio Cézar Nevez
Livro Programação em Shell 8 edição   Julio Cézar NevezLivro Programação em Shell 8 edição   Julio Cézar Nevez
Livro Programação em Shell 8 edição Julio Cézar Nevez
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Java Script
Java ScriptJava Script
Java Script
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11
 
Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores Linux
 

Semelhante a Minicurso Shell Script

Shell script
Shell scriptShell script
Shell script
Kleber Monte
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
Thiago Cifani
 
Aula01
Aula01Aula01
Aula01
Yuri Passos
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
Milfont Consulting
 
Oficina shell
Oficina shellOficina shell
Oficina shell
apsegundo
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
Paulo Dayvson
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
jonatasoliveira
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
Marcelo Bohn
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Julio Monteiro
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
MrcioSantos806520
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Julio Betta
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
JogosUnisinos
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
Jcradio Vw
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
COTIC-PROEG (UFPA)
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
Paulo Souza
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
Bruno Catão
 
Minicurso Java && Cl
Minicurso Java && ClMinicurso Java && Cl
Minicurso Java && Cl
Raphael Marques
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
Natanael Fonseca
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
philipsoares
 

Semelhante a Minicurso Shell Script (20)

Shell script
Shell scriptShell script
Shell script
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Aula01
Aula01Aula01
Aula01
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Minicurso Java && Cl
Minicurso Java && ClMinicurso Java && Cl
Minicurso Java && Cl
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 

Minicurso Shell Script

  • 1. Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa Apresentadores: Igor Rafael da Rocha Luís Eduardo Tenório Silva
  • 2. Apresentadores Igor Rafael da Rocha Luís Eduardo Tenório da Silva IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 2
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Shell Script Variáveis •Definição ▫NOME=valor •Acesso: ▫$NOME IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 12
  • 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. 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. 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. 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. 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. 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. 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. Shell Script Estrutura de Condição •If...Else •If...Elif...Else •Case IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 20
  • 21. Shell Script If...Else •Sintaxe: if [ OPTION(s) ];then CONDITION else CONDITION IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 21
  • 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. 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. 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. 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. 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. Shell Script Case •Sintaxe: case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 27
  • 28. Shell Script Estrutura de Repetição •For •While IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 28
  • 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. Shell Script For •Sintaxe: while [ condition ];do command(s)... done IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 30
  • 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. 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. 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. 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. Shell Script Redirecionadores IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 35
  • 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. Shell Script Redirecionadores •Dispositivos especiais ▫/dev/null ▫/dev/zero ▫/dev/random IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 37
  • 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. 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. 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. Shell Script Processamento de texto •Sed •Awk •Grep IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 41
  • 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. 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. 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. 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. 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. 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. Dialog Tipos de caixa IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 48
  • 49. Dialog Calendar dialog --title 'Escolha a data' --calendar '' 0 0 31 12 1999 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 49
  • 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. Dialog Fselect dialog --title 'Escolha onde instalar' --fselect /usr/share/vim/ 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 51
  • 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. Dialog Infobox dialog --title 'Aguarde' --infobox 'n Finalizando em 5 segundos...' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 53
  • 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. 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. Dialog Msgbox dialog --title 'Parabéns' --msgbox 'Instalação finalizada com sucesso.' 6 40 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 56
  • 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. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 58 Tailbox, Tailboxbg dialog --title 'Monitorando Mensagens do Sistema' --tailbox out 0 0
  • 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. 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. 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. 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. 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. 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. 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. Dialog Funcionamento do Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 66
  • 67. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 67
  • 68. Referências IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 68