SlideShare uma empresa Scribd logo
Introdução ao 
Shell Script 
(versão estendida) 
Hugo Maia Vieira 
@hugomaiavieira 
novembro de 2014 Esta obra é licenciada sob uma licença 
Creative Commons
O que é Shell Script? 
O que é shell? 
O que é script? 
scripts em shell == Shell Scritp ==
O Shell, terminal, prompt, 
linha de comando
Scripts executáveis (Unix) 
chmod +x arquivo 
Localização do interpretador: hashbang¹ (#!) 
#!/bin/sh 
ou 
#!/usr/bin/env sh 
¹ http://en.wikipedia.org/wiki/Shebang_(Unix)
Variáveis 
$ VARIAVEL='bla bla bla' 
$ echo $VARIAVEL 
bla bla bla 
+ Não pode haver espaços ao redor do igual 
+ O comando local variáveis locais 
+ O comando unset elimina a variável 
+ É possível armazenar a saída de um comando usando o $(...): 
$ DATA=$(date +%x) 
$ echo $DATA 
09-11-2011
Expressões aritméticas 
+ A construção utilizada para indicar uma expressão aritmética 
É $((...)). Sim, com 2 parênteses! 
$ echo $((5*8)) 
40 
$ SOMA=$((2+5+1)) 
$ echo $SOMA 
8 
$ RESPOTA=$((SOMA*2)) 
$ echo $RESPOSTA 
16
O comando test 
$ test EXPRESSÃO 
$ test [[ EXPRESSÃO ]] 
$ man test 
$ test "a" = "a" && echo "é igual!" 
é igual 
$ echo $? 
0 
$ [[ "a" = "b" ]] && echo "é igual!" 
$ echo $? 
1 
+ Para a sintaxe usando colchetes, deve ter um espaço 
entre a expressão e os colchetes.
if COMANDO 
then 
comandos 
elif COMANDO 
then 
comandos 
else 
comandos 
fi 
if 
+ O if testa um comando e não uma condição. Porém, 
existe o comando test que testa condições. 
if [[ "a" -gt 25 ]]; then 
echo "é maior que 25" 
else 
echo "é menor que 25" 
fi 
+ Fique ligado: o if é fechado com o fi, ou seja, if invertido.
for 
for VARIAVEL in LISTA 
do 
comandos 
done 
+ O for percorre uma lista, pegando um elemento a cada iteração. 
echo 'Seu computador irá explodir em 5 segundos' 
for numero in cinco quatro três dois um 
do 
echo "$numero" 
sleep 1 
done 
echo "BUUMMMM!!!"
for 
+ Um comando muito útil para usar com o for é o seq, que 
gera uma sequência numérica. 
for numero in $(seq 5) 
+ Outro comando muito útil para usar com o for é o cat: 
contador=0 
for pais in $(cat dados.txt) 
do 
contador=$((contador+1)) 
echo "$contador: $pais" 
done
while 
while COMANDO 
do 
comandos 
done 
numero=0 
while test $numero -le 10 
do 
numero=$((numero+1)) 
echo "Contando: $numero" 
done 
+ Existem também o until, que têm as mesmas características do 
while. a única diferença é que ele faz o contrário.
case 
case VARIAVEL in 
caso1) comando; comando;; 
caso2) comando; comando;; 
*) comando;; 
esac 
case "$1" in 
-h | --help) echo "$MENSAGEM_DE_USO" ;; 
-V | --version) echo "1.0" ;; 
*) echo "Opção inválida: $1" ;; 
esac 
+ Fique ligado: o case é fechado com o esac, ou seja, 
case invertido.
funções 
nome_funcao () { 
comandos 
} 
function nome_funcao { 
comandos 
} 
pedir_nome () { 
echo -n "Digite seu nome: " 
read NOME 
} 
pedir_nome 
echo "Olá $NOME!"
Opções de linha de comando 
+ Variáveis especiais e parâmetros posicionais 
$0 → Nome do script 
$1-$n → Parâmetros passados à linha de comando 
$# → Número de parâmetros passados 
$* → Lista de parâmetros passados 
cut -d : -f 2 /etc/passwd 
# $0 = cut 
# $1 = -d 
# $2 = : 
# $3 = -f 
# $4 = 2 
# $5 = /etc/passwd 
# $# = 5 
# $* = -d : -f 2 /etc/passwd
Vamos ao primeiro exemplo! 
listando usuários 
https://github.com/hugomaiavieira/shellscript-scti2014
.bashrc
Alias (apelidos) 
alias ss="spring rspec" 
alias ll="ls -lah" 
alias ..='cd ..' 
# google chrome for mobile dev 
alias mobile_chrome="google-chrome  
--allow-file-access-from-files  
--disable-web-security  
--user-data-dir=$HOME/.google-chrome/mobile_dev"
Variáveis de ambiente 
$PATH 
$PS1 
$QQ_COISA
Vamos ao segundo exemplo! 
oh my gems! 
https://github.com/hugomaiavieira/shellscript-scti2014
autocompletar 
compgen e complete
compgem 
+ Lista de possíveis “completadas” 
compgen -W 'pedro mario maria joão mariana' mari
complete 
+ Disponibiliza e usa suas variáveis para funções de autocompletar 
COMP_LINE 
a linha de comando no momento 
COMP_WORDS 
lista de argumentos passados para o comando no momento 
COMP_CWORD 
o índice do argumento onde o cursor está no momento 
COMP_WORDBREAKS 
lista de caracteres separadores de palavras 
COMPREPLY 
um array contendo as possíveis “completadas”
Exemplo 
_nome() { 
local current=${COMP_WORDS[COMP_CWORD]} 
COMPREPLY=( $(compgen -W 'mario maria ana mariana' $current) ) 
} 
complete -F _nome nome 
Estamos dizendo ao comando complete que utilize a função _nome 
para modificar a variável COMPREPLY com as possíveis “completadas” 
para o comando nome 
current=${COMP_WORDS[COMP_CWORD]} 
Se estivermos digitando “nome mari” e apartarmos [TAB][TAB], 
o valor de current será “mari”
Referências 
http://www.novatec.com.br/livros/shellscript/ 
Shell Script Professinal – Aurélio Marinho Jargas 
http://www.tldp.org/LDP/abs/html/abs-guide.html 
Advanced Bash-Scripting Guide 
http://en.wikipedia.org/wiki/Shebang_(Unix) 
Sobre o hashbang 
http://goo.gl/INt07D 
Autocompletar no Bash

Mais conteúdo relacionado

PDF
Shell script
PDF
12 aula - shell script-2015
ODP
Introducao ao Shell Script
PDF
Minicurso Shell Script
PDF
Curso Gratuito de Shell Script
PDF
Tutorial Shell Script
PDF
Lista de exercícios em Bash (resolvida)
PPS
Shell script
Shell script
12 aula - shell script-2015
Introducao ao Shell Script
Minicurso Shell Script
Curso Gratuito de Shell Script
Tutorial Shell Script
Lista de exercícios em Bash (resolvida)
Shell script

Mais procurados (20)

PDF
Soa cap2 exercicios resolvidos shell
PDF
Oficina de shell script
PDF
Curso shell
PPT
Shell Script
PDF
Shell Script v0
PDF
Agenda em bash e dialog
ODP
Bash, o poder da linha de comando! - Tchelinux.org 2017
PDF
Programação em Shell Script
PDF
Curso gratuitoshellscript nivel-2
PPTX
Shell script i
PPT
O Que é Shell (bash)
PPT
Sapo sessions linux power tools
PDF
Scatole Nere
PPTX
Shell script
PDF
shell bash Fpar aula6
PDF
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PDF
Curso de ShellScript - Lm07 shellscript7
PDF
Desenvolvendo Extensões PECL
Soa cap2 exercicios resolvidos shell
Oficina de shell script
Curso shell
Shell Script
Shell Script v0
Agenda em bash e dialog
Bash, o poder da linha de comando! - Tchelinux.org 2017
Programação em Shell Script
Curso gratuitoshellscript nivel-2
Shell script i
O Que é Shell (bash)
Sapo sessions linux power tools
Scatole Nere
Shell script
shell bash Fpar aula6
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
Curso de ShellScript - Lm07 shellscript7
Desenvolvendo Extensões PECL
Anúncio

Destaque (20)

PDF
Livro Programação em Shell 8 edição Julio Cézar Nevez
PDF
Introdução à Shellscript
PDF
Livro pfsense 2.0 em português
PDF
Curso de Certificação Linux LPI - Terminal Root
PDF
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
PDF
Livro proibido do curso de hacker completo 285 páginas 71
PDF
Manual linux completo
ODP
Shell Script - Luz e trevas
PPT
Curso programação web em PHP
PDF
Exemplos Aula2
PDF
Acessardados Aula7
PDF
Exemplos Aula4
PPT
Planode Aula
PDF
Códigos da Aula3
PDF
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
PDF
Aula 1 estruturas de controlo (final)
PPT
Aula 01 - Programação Web - PHP
PPTX
Engenharia de Usabilidade
PPT
Estrutura de controle if else
PDF
Curso básico de eletrônica digital parte 11
Livro Programação em Shell 8 edição Julio Cézar Nevez
Introdução à Shellscript
Livro pfsense 2.0 em português
Curso de Certificação Linux LPI - Terminal Root
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Livro proibido do curso de hacker completo 285 páginas 71
Manual linux completo
Shell Script - Luz e trevas
Curso programação web em PHP
Exemplos Aula2
Acessardados Aula7
Exemplos Aula4
Planode Aula
Códigos da Aula3
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
Aula 1 estruturas de controlo (final)
Aula 01 - Programação Web - PHP
Engenharia de Usabilidade
Estrutura de controle if else
Curso básico de eletrônica digital parte 11
Anúncio

Semelhante a Introdução ao Shell Script (versão estendida) (20)

PDF
Shell scripts
PDF
Curso De Shell Aula 1
PDF
Oficina shell
PDF
Introdução ao shell script no linux
PDF
Curso de ShellScript - Lm10 shellscript10
PDF
Curso de shell
PDF
Curso de shell
PDF
Shell script
PDF
Lpi+102
PDF
Shell script
PDF
Shell Script
PDF
01 apostila-introducao-shell
PDF
Apostila introducao-shell
PDF
Fpar aula5
PDF
Curso de ShellScript - Lm06 shellscript6
PDF
Trabalhando na Linha de comando
PDF
Linux shell
PPTX
Introdução ao bash
ODP
Shell Scripting
PDF
Curso de shell-tutorial avançadoIII .pdf
Shell scripts
Curso De Shell Aula 1
Oficina shell
Introdução ao shell script no linux
Curso de ShellScript - Lm10 shellscript10
Curso de shell
Curso de shell
Shell script
Lpi+102
Shell script
Shell Script
01 apostila-introducao-shell
Apostila introducao-shell
Fpar aula5
Curso de ShellScript - Lm06 shellscript6
Trabalhando na Linha de comando
Linux shell
Introdução ao bash
Shell Scripting
Curso de shell-tutorial avançadoIII .pdf

Último (7)

PDF
apresentacao introducao computacao ead.pdf
PDF
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
Curso de Windows 11 resumido na prática.pptx
apresentacao introducao computacao ead.pdf
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP
Mapeamento de Objeto para Tabela Relacional
Curso de Windows 11 resumido na prática.pptx

Introdução ao Shell Script (versão estendida)

  • 1. Introdução ao Shell Script (versão estendida) Hugo Maia Vieira @hugomaiavieira novembro de 2014 Esta obra é licenciada sob uma licença Creative Commons
  • 2. O que é Shell Script? O que é shell? O que é script? scripts em shell == Shell Scritp ==
  • 3. O Shell, terminal, prompt, linha de comando
  • 4. Scripts executáveis (Unix) chmod +x arquivo Localização do interpretador: hashbang¹ (#!) #!/bin/sh ou #!/usr/bin/env sh ¹ http://en.wikipedia.org/wiki/Shebang_(Unix)
  • 5. Variáveis $ VARIAVEL='bla bla bla' $ echo $VARIAVEL bla bla bla + Não pode haver espaços ao redor do igual + O comando local variáveis locais + O comando unset elimina a variável + É possível armazenar a saída de um comando usando o $(...): $ DATA=$(date +%x) $ echo $DATA 09-11-2011
  • 6. Expressões aritméticas + A construção utilizada para indicar uma expressão aritmética É $((...)). Sim, com 2 parênteses! $ echo $((5*8)) 40 $ SOMA=$((2+5+1)) $ echo $SOMA 8 $ RESPOTA=$((SOMA*2)) $ echo $RESPOSTA 16
  • 7. O comando test $ test EXPRESSÃO $ test [[ EXPRESSÃO ]] $ man test $ test "a" = "a" && echo "é igual!" é igual $ echo $? 0 $ [[ "a" = "b" ]] && echo "é igual!" $ echo $? 1 + Para a sintaxe usando colchetes, deve ter um espaço entre a expressão e os colchetes.
  • 8. if COMANDO then comandos elif COMANDO then comandos else comandos fi if + O if testa um comando e não uma condição. Porém, existe o comando test que testa condições. if [[ "a" -gt 25 ]]; then echo "é maior que 25" else echo "é menor que 25" fi + Fique ligado: o if é fechado com o fi, ou seja, if invertido.
  • 9. for for VARIAVEL in LISTA do comandos done + O for percorre uma lista, pegando um elemento a cada iteração. echo 'Seu computador irá explodir em 5 segundos' for numero in cinco quatro três dois um do echo "$numero" sleep 1 done echo "BUUMMMM!!!"
  • 10. for + Um comando muito útil para usar com o for é o seq, que gera uma sequência numérica. for numero in $(seq 5) + Outro comando muito útil para usar com o for é o cat: contador=0 for pais in $(cat dados.txt) do contador=$((contador+1)) echo "$contador: $pais" done
  • 11. while while COMANDO do comandos done numero=0 while test $numero -le 10 do numero=$((numero+1)) echo "Contando: $numero" done + Existem também o until, que têm as mesmas características do while. a única diferença é que ele faz o contrário.
  • 12. case case VARIAVEL in caso1) comando; comando;; caso2) comando; comando;; *) comando;; esac case "$1" in -h | --help) echo "$MENSAGEM_DE_USO" ;; -V | --version) echo "1.0" ;; *) echo "Opção inválida: $1" ;; esac + Fique ligado: o case é fechado com o esac, ou seja, case invertido.
  • 13. funções nome_funcao () { comandos } function nome_funcao { comandos } pedir_nome () { echo -n "Digite seu nome: " read NOME } pedir_nome echo "Olá $NOME!"
  • 14. Opções de linha de comando + Variáveis especiais e parâmetros posicionais $0 → Nome do script $1-$n → Parâmetros passados à linha de comando $# → Número de parâmetros passados $* → Lista de parâmetros passados cut -d : -f 2 /etc/passwd # $0 = cut # $1 = -d # $2 = : # $3 = -f # $4 = 2 # $5 = /etc/passwd # $# = 5 # $* = -d : -f 2 /etc/passwd
  • 15. Vamos ao primeiro exemplo! listando usuários https://github.com/hugomaiavieira/shellscript-scti2014
  • 17. Alias (apelidos) alias ss="spring rspec" alias ll="ls -lah" alias ..='cd ..' # google chrome for mobile dev alias mobile_chrome="google-chrome --allow-file-access-from-files --disable-web-security --user-data-dir=$HOME/.google-chrome/mobile_dev"
  • 18. Variáveis de ambiente $PATH $PS1 $QQ_COISA
  • 19. Vamos ao segundo exemplo! oh my gems! https://github.com/hugomaiavieira/shellscript-scti2014
  • 21. compgem + Lista de possíveis “completadas” compgen -W 'pedro mario maria joão mariana' mari
  • 22. complete + Disponibiliza e usa suas variáveis para funções de autocompletar COMP_LINE a linha de comando no momento COMP_WORDS lista de argumentos passados para o comando no momento COMP_CWORD o índice do argumento onde o cursor está no momento COMP_WORDBREAKS lista de caracteres separadores de palavras COMPREPLY um array contendo as possíveis “completadas”
  • 23. Exemplo _nome() { local current=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W 'mario maria ana mariana' $current) ) } complete -F _nome nome Estamos dizendo ao comando complete que utilize a função _nome para modificar a variável COMPREPLY com as possíveis “completadas” para o comando nome current=${COMP_WORDS[COMP_CWORD]} Se estivermos digitando “nome mari” e apartarmos [TAB][TAB], o valor de current será “mari”
  • 24. Referências http://www.novatec.com.br/livros/shellscript/ Shell Script Professinal – Aurélio Marinho Jargas http://www.tldp.org/LDP/abs/html/abs-guide.html Advanced Bash-Scripting Guide http://en.wikipedia.org/wiki/Shebang_(Unix) Sobre o hashbang http://goo.gl/INt07D Autocompletar no Bash