SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Shell Script
       @deniscostadsc
DENIS COSTA
DENIS COSTA




Coding Dojo
Tópicos:

•   O que é shell?
•   Sabores de shell
•   O que é Shell Script?
•   Shell Script é...
•   Redirecionamentos
•   Caracteres Curinga
•   Sintaxe
•   Ajuda
O que é shell?
hardware


  kernel

aplicativos



 SHELL

 usuário
Sabores de shell
Bourne Shell (sh)
Bourne-Again Shell (bash)
Almquist Shell (ash)
Debian Almquist Shell (dash)
Z Shell (zsh)
Korn shell (ksh)
...
O que é Shell Script?
$ rm *~ # linha de comando
$ cat myscript.sh # script
rm *~
$ ./myscript.sh
Shell Script é...
...rápido para prototipar
...fácil
...ótimo para automatizar tarefas
...ótimo para executar tarefas agendadas
...ótimo para iniciar aplicativos
...ótimo para instalar software
...
...horrível para multiplataforma
...inpensável para alto desempenho
...lento para IO pesado
...
Redirecionamento
$ ## Standard Output
$ # Saída padrão para o arquivo
$ comando > arquivo
$ comando 1> arquivo
$
$ # Saída padrão para o fim do arquivo
$ comando >> arquivo
$ comando 1>> arquivo
$ ## Standard Error
$ # Saída de erro para o arquivo
$ comando 2> arquivo
$
$ # Saída de erro para o fim do arquivo
$ comando 2>> arquivo
$ ## Juntando as saídas
$ # Saída padrão para arquivo
$ # e saída de erro para saída padrão
$ comando 1> arquivo 2>&1
$ ## Separando as saídas
$ # Saída padrão para arquivo
$ # e saída de erro para outro_arquivo
$ comando 1> arquivo 2> outro_arquivo
$ ## Standard Input
$
$ comando < arquivo
$ comando <<< texto
$ ## Pipe
$ # Redireciona a saída padrão do
$ # comando1 para a entrada padrão do
$ # comando2
$ comando1 | comando2
Caracteres Curinga
Caracteres curinga parecem Regex,
mas são DIFERENTES.
Curinga                    Padrão

   *               Zero ou mais caracteres

   ?                Um caractere qualquer

 [abc]         Um caractere que esteja na lista

 [!abc]      Um caractere que não esteja na lista

 [a-c]        Um caractere que esteja no range

 [!a-c]     Um caractere que não esteja no range


{pdf,jpg}         Palavra que esteja na lista
$ ## Expansão dos curingas
$ ls *
a.jpg    a.pdf   b.pdf     cd.pdf   c.pdf
$ ls ?.pdf
a.pdf    b.pdf     c.pdf
$ ls [abc].pdf
a.pdf    b.pdf     c.pdf
$ ls [!a].pdf
b.pdf c.pdf
$ ls a.{pdf,jpg}
a.jpg    a.pdf
Sintaxe
#!/bin/bash
# Atribuindo valores as variáveis
numero=1
text=TextoSemAspasMasSemEspacos
text2=”Texto com aspas e com espacos”
# Usando valores das variáveis
echo $numero
echo $text
echo $text2
#!/bin/bash
# Substituição de variáveis


var=”Ola”
echo $var
# echo Ola
#!/bin/bash
# Substituição de comandos


file   `which bash`
# file /bin/bash


echo $(echo $(echo $(echo “oi”)))
# echo $(echo $(echo "oi"))
# echo $(echo "oi")
# echo "oi"
$ # A passagens de parametros dos scripts
$ # é feita de maneira posicional
$
$ ./myscript.sh parametro1 paramentro2
#!/bin/bash
# O recuperação dos valores passados
# como parametro é feito através
# de variáveis especiais


echo $1 # 1° parametro
echo $2 # 2° parametro
echo $11 # 1° parametro seguido de 1
echo ${11} # 11° parametro
#!/bin/bash
# Ainda existem variáveis para acessar
# os parametros de várias formas


echo $* # parametros separados pelo $IFS
echo $@ # parametros “p1” “p2”
echo $# # numero de parametros
#!/bin/bash
# O if verifica o exit status do comando


if grep "denis" texto.txt
then
     echo "Achei ele"
else
     echo "Ele escapou"
fi
#!/bin/bash
# Para fazer comparações use o builtin
# command test...


a=1
if test $a == 1
then
     echo "É igual"
else
     echo "É diferente"
fi
#!/bin/bash
# ... ou sua sintaxe com [   ]


a=1
if [ $a == 1 ]
then
     echo "É igual"
else
     echo "É diferente"
fi
#!/bin/bash
# O for funciona como um for each, e separa
# os elementos usando o conteúdo do $IFS
# $IFS é uma variável de ambiente que contém
# o(s) separador(es) padrão(ões)


for number in 1 2 3 4 5 6 7 8 9 10
do
     echo $number
done
#!/bin/bash
# Se você quisesse iterar sobre uma grande
# sequência de números


for number in $(seq 100)
do
     echo $number
done
#!/bin/bash
# Nas versões mais novas do Bash é possível
# usar uma sintaxe que lembra a do C.


for ((number = 0; number < 10; number++))
do
     echo $number
done
#!/bin/bash
# CSV Parser de pobre
comma=','
new_line='
'
old_IFS=$IFS
IFS=$new_line
for line in $(cat cars.csv); do
    IFS=$comma
    for item in $line; do
       echo -ne "$itemt"
    done
    echo “”
done
IFS=$oldIFS
#!/bin/bash
# O while funciona como o if e executa
# enquanto o comando verificado retorna exit
# status 0


while ping -c 2 www.google.com
do
     echo “Sim, temos internet!!”
done
#!/bin/bash
# O until é muito semelhante ao while mas
# executa enquanto o exit status é diferente
# de 0


until ping -c 2 www.google.com
do
     echo "Ainda estamos sem internet 8("
done
#!/bin/bash
# O case permite vericar o conteúdo de uma
# variável várias vezes


case $SO in
  linux)
       echo "É Linux"
  ;;
  w*)
       echo "Isso não é um bom sinal"
  ;;
  *)
       echo "Sistema não reconhecido"
  ;;
esac
#!/bin/bash
# A declaração de funções é feito com a
# palavra reservda function


function nome_da_funcao(){
    comando
    ...
}
#!/bin/bash
# A invocação de funções e a
# passagens de parâmentros é
# feito como os scripts


funcao parametro1 parametro2
#!/bin/bash
function map(){
    func=$1
    for item in $2; do
      $func $item
    done
}


function reduce(){
    func=$1
    acumulador=$(cut -d ' ' -f 1 <<< "$2")
    resto=$(cut -d ' ' -f 2- <<< "$2")
    for item in $resto; do
      acumulador=$($func $acumulador $item)
    done
    echo $acumulador
}
function quadrado(){
      echo $(($1 * $1))
}
map "quadrado" "1 2 3 4 5 6 7 8 9 10"
# 1
# 4
# 9
# 16
# 25
# 36
# 49
# 64
# 81
# 100
function primeira(){
    echo $(cut -c 1 <<< "$1")
}
map "primeira" "O Rato Roeu A Roupa Do Rei De Roma"
# O
# R
# R
# A
# R
# D
# R
# D
# R
function soma(){
    echo $(($1 + $2))
}
reduce "soma" "1 2 3 4"
# 10
function concat(){
    echo $1$2
}
reduce "concat" "O Rato Roeu A Roupa Do Rei De Roma"
# ORatoRoeuARoupaDoReiDeRoma
# /bin/bash
# URL checker burro
function get_status_code(){
    echo $(curl -sL -w 'n%{http_code}n' $1 | tail -1)
}


for url in $(cat urls.txt); do
    if [ $(get_status_code "$url") != "200" ]; then
         echo "$url" >> urls_down.txt
    fi
done
#/bin/bash
# URL checker inteligente
function get_status_code(){
    echo $(curl -sL -w 'n%{http_code}n' $1 | tail -1)
}


function request(){
     url=$1
     if [ $(get_status_code "$url") != "200" ]; then
          echo "$url" >> urls_down.txt
     fi
}


for url in $(cat urls.txt); do
     request $url &
done
Ajuda
●   $man bash
●   http://aurelio.net/shell/
●   http://tldp.org/LDP/abs/abs-guide.pdf
Obrigado =)

Mais conteúdo relacionado

Mais procurados (20)

Soa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shellSoa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shell
 
Agenda em bash e dialog
Agenda em bash e dialogAgenda em bash e dialog
Agenda em bash e dialog
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Curso shell
Curso shellCurso shell
Curso shell
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 
Stack based overflow
Stack based overflowStack based overflow
Stack based overflow
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Shell script i
Shell script iShell script i
Shell script i
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Scatole Nere
Scatole NereScatole Nere
Scatole Nere
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
 

Destaque

Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevasOsvaldo Filho
 
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 NevezSoftD 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 71Guilherme Dias
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaCarlos Melo
 
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 11Renan Boccia
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores LinuxLinux Solutions
 
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 12Renan Boccia
 
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiServidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiTchelinux
 
Certificação LPI-1 Amostra
Certificação LPI-1 AmostraCertificação LPI-1 Amostra
Certificação LPI-1 AmostraMarcos Oliveira
 
Curso básico de eletrônica digital parte 9
Curso básico de eletrônica digital parte 9Curso básico de eletrônica digital parte 9
Curso básico de eletrônica digital parte 9Renan Boccia
 
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 QuotasFrederico Madeira
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores LinuxJoão Sá
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsDavid de Assis
 

Destaque (20)

Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
 
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
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de sala
 
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
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores Linux
 
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
 
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiServidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
 
OpenLDAP: Porque utilizá-lo
OpenLDAP: Porque utilizá-loOpenLDAP: Porque utilizá-lo
OpenLDAP: Porque utilizá-lo
 
Certificação LPI-1 Amostra
Certificação LPI-1 AmostraCertificação LPI-1 Amostra
Certificação LPI-1 Amostra
 
Shell Script Linux
Shell Script LinuxShell Script Linux
Shell Script Linux
 
OpenLDAP
OpenLDAPOpenLDAP
OpenLDAP
 
Curso básico de eletrônica digital parte 9
Curso básico de eletrônica digital parte 9Curso básico de eletrônica digital parte 9
Curso básico de eletrônica digital parte 9
 
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
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Scampi
ScampiScampi
Scampi
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
 

Semelhante a Shell script

Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 
Oficina shell
Oficina shellOficina shell
Oficina shellapsegundo
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxoFrederico Madeira
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash scriptRennan Cockles
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesCarlos Santos
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9Nando Vieira
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Pessoal
 
Javascript Avançado
Javascript AvançadoJavascript Avançado
Javascript AvançadoBruno Tavares
 

Semelhante a Shell script (20)

Linux shell
Linux shellLinux shell
Linux shell
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Lpi+102
Lpi+102Lpi+102
Lpi+102
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
PHP 5.3 - Funções
PHP 5.3 - FunçõesPHP 5.3 - Funções
PHP 5.3 - Funções
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
 
Javascript Avançado
Javascript AvançadoJavascript Avançado
Javascript Avançado
 
Introdução ao PHP Parte 2
Introdução ao PHP Parte 2Introdução ao PHP Parte 2
Introdução ao PHP Parte 2
 

Shell script

  • 1. Shell Script @deniscostadsc
  • 4. Tópicos: • O que é shell? • Sabores de shell • O que é Shell Script? • Shell Script é... • Redirecionamentos • Caracteres Curinga • Sintaxe • Ajuda
  • 5. O que é shell?
  • 8. Bourne Shell (sh) Bourne-Again Shell (bash) Almquist Shell (ash) Debian Almquist Shell (dash) Z Shell (zsh) Korn shell (ksh) ...
  • 9. O que é Shell Script?
  • 10. $ rm *~ # linha de comando $ cat myscript.sh # script rm *~ $ ./myscript.sh
  • 12. ...rápido para prototipar ...fácil ...ótimo para automatizar tarefas ...ótimo para executar tarefas agendadas ...ótimo para iniciar aplicativos ...ótimo para instalar software ...
  • 13. ...horrível para multiplataforma ...inpensável para alto desempenho ...lento para IO pesado ...
  • 15. $ ## Standard Output $ # Saída padrão para o arquivo $ comando > arquivo $ comando 1> arquivo $ $ # Saída padrão para o fim do arquivo $ comando >> arquivo $ comando 1>> arquivo
  • 16. $ ## Standard Error $ # Saída de erro para o arquivo $ comando 2> arquivo $ $ # Saída de erro para o fim do arquivo $ comando 2>> arquivo
  • 17. $ ## Juntando as saídas $ # Saída padrão para arquivo $ # e saída de erro para saída padrão $ comando 1> arquivo 2>&1
  • 18. $ ## Separando as saídas $ # Saída padrão para arquivo $ # e saída de erro para outro_arquivo $ comando 1> arquivo 2> outro_arquivo
  • 19. $ ## Standard Input $ $ comando < arquivo $ comando <<< texto
  • 20. $ ## Pipe $ # Redireciona a saída padrão do $ # comando1 para a entrada padrão do $ # comando2 $ comando1 | comando2
  • 22. Caracteres curinga parecem Regex, mas são DIFERENTES.
  • 23. Curinga Padrão * Zero ou mais caracteres ? Um caractere qualquer [abc] Um caractere que esteja na lista [!abc] Um caractere que não esteja na lista [a-c] Um caractere que esteja no range [!a-c] Um caractere que não esteja no range {pdf,jpg} Palavra que esteja na lista
  • 24. $ ## Expansão dos curingas $ ls * a.jpg a.pdf b.pdf cd.pdf c.pdf $ ls ?.pdf a.pdf b.pdf c.pdf $ ls [abc].pdf a.pdf b.pdf c.pdf $ ls [!a].pdf b.pdf c.pdf $ ls a.{pdf,jpg} a.jpg a.pdf
  • 26. #!/bin/bash # Atribuindo valores as variáveis numero=1 text=TextoSemAspasMasSemEspacos text2=”Texto com aspas e com espacos” # Usando valores das variáveis echo $numero echo $text echo $text2
  • 27. #!/bin/bash # Substituição de variáveis var=”Ola” echo $var # echo Ola
  • 28. #!/bin/bash # Substituição de comandos file `which bash` # file /bin/bash echo $(echo $(echo $(echo “oi”))) # echo $(echo $(echo "oi")) # echo $(echo "oi") # echo "oi"
  • 29. $ # A passagens de parametros dos scripts $ # é feita de maneira posicional $ $ ./myscript.sh parametro1 paramentro2
  • 30. #!/bin/bash # O recuperação dos valores passados # como parametro é feito através # de variáveis especiais echo $1 # 1° parametro echo $2 # 2° parametro echo $11 # 1° parametro seguido de 1 echo ${11} # 11° parametro
  • 31. #!/bin/bash # Ainda existem variáveis para acessar # os parametros de várias formas echo $* # parametros separados pelo $IFS echo $@ # parametros “p1” “p2” echo $# # numero de parametros
  • 32. #!/bin/bash # O if verifica o exit status do comando if grep "denis" texto.txt then echo "Achei ele" else echo "Ele escapou" fi
  • 33. #!/bin/bash # Para fazer comparações use o builtin # command test... a=1 if test $a == 1 then echo "É igual" else echo "É diferente" fi
  • 34. #!/bin/bash # ... ou sua sintaxe com [ ] a=1 if [ $a == 1 ] then echo "É igual" else echo "É diferente" fi
  • 35. #!/bin/bash # O for funciona como um for each, e separa # os elementos usando o conteúdo do $IFS # $IFS é uma variável de ambiente que contém # o(s) separador(es) padrão(ões) for number in 1 2 3 4 5 6 7 8 9 10 do echo $number done
  • 36. #!/bin/bash # Se você quisesse iterar sobre uma grande # sequência de números for number in $(seq 100) do echo $number done
  • 37. #!/bin/bash # Nas versões mais novas do Bash é possível # usar uma sintaxe que lembra a do C. for ((number = 0; number < 10; number++)) do echo $number done
  • 38. #!/bin/bash # CSV Parser de pobre comma=',' new_line=' ' old_IFS=$IFS IFS=$new_line for line in $(cat cars.csv); do IFS=$comma for item in $line; do echo -ne "$itemt" done echo “” done IFS=$oldIFS
  • 39. #!/bin/bash # O while funciona como o if e executa # enquanto o comando verificado retorna exit # status 0 while ping -c 2 www.google.com do echo “Sim, temos internet!!” done
  • 40. #!/bin/bash # O until é muito semelhante ao while mas # executa enquanto o exit status é diferente # de 0 until ping -c 2 www.google.com do echo "Ainda estamos sem internet 8(" done
  • 41. #!/bin/bash # O case permite vericar o conteúdo de uma # variável várias vezes case $SO in linux) echo "É Linux" ;; w*) echo "Isso não é um bom sinal" ;; *) echo "Sistema não reconhecido" ;; esac
  • 42. #!/bin/bash # A declaração de funções é feito com a # palavra reservda function function nome_da_funcao(){ comando ... }
  • 43. #!/bin/bash # A invocação de funções e a # passagens de parâmentros é # feito como os scripts funcao parametro1 parametro2
  • 44. #!/bin/bash function map(){ func=$1 for item in $2; do $func $item done } function reduce(){ func=$1 acumulador=$(cut -d ' ' -f 1 <<< "$2") resto=$(cut -d ' ' -f 2- <<< "$2") for item in $resto; do acumulador=$($func $acumulador $item) done echo $acumulador }
  • 45. function quadrado(){ echo $(($1 * $1)) } map "quadrado" "1 2 3 4 5 6 7 8 9 10" # 1 # 4 # 9 # 16 # 25 # 36 # 49 # 64 # 81 # 100
  • 46. function primeira(){ echo $(cut -c 1 <<< "$1") } map "primeira" "O Rato Roeu A Roupa Do Rei De Roma" # O # R # R # A # R # D # R # D # R
  • 47. function soma(){ echo $(($1 + $2)) } reduce "soma" "1 2 3 4" # 10
  • 48. function concat(){ echo $1$2 } reduce "concat" "O Rato Roeu A Roupa Do Rei De Roma" # ORatoRoeuARoupaDoReiDeRoma
  • 49. # /bin/bash # URL checker burro function get_status_code(){ echo $(curl -sL -w 'n%{http_code}n' $1 | tail -1) } for url in $(cat urls.txt); do if [ $(get_status_code "$url") != "200" ]; then echo "$url" >> urls_down.txt fi done
  • 50. #/bin/bash # URL checker inteligente function get_status_code(){ echo $(curl -sL -w 'n%{http_code}n' $1 | tail -1) } function request(){ url=$1 if [ $(get_status_code "$url") != "200" ]; then echo "$url" >> urls_down.txt fi } for url in $(cat urls.txt); do request $url & done
  • 51. Ajuda
  • 52. $man bash ● http://aurelio.net/shell/ ● http://tldp.org/LDP/abs/abs-guide.pdf