Introdução ao  Shell Script Hugo Maia Vieira @hugomaiavieira novembro de 2011 Esta obra é licenciada sob uma licença Creative Commons
¿O que é shell? ¿O que é script? ¿O que é Shell Script? scripts em shell == Shell Scritp ==
O Shell, terminal, prompt,  linha de comando
chmod  + x arquivo Localização do interpretador: hashbang¹ (#!) Scripts executáveis (Unix) #!/bin/sh #!/usr/bin/env sh ou ¹  http://en.wikipedia.org/wiki/Shebang_(Unix)
$ VARIAVEL='bla bla bla' $ echo $VARIAVEL bla bla bla Variáveis + Não pode haver espaços ao redor do igual + O comando  unset  apaga a variável + É possível armazenar a saída de um comando usando o  $( ... ) : $ DATA=$(date +%x) $ echo $DATA 09-11-2011
$ echo $((5*8)) 40 $ SOMA=$((2+5+1)) $ echo $SOMA 8 $ RESPOTA=$((SOMA*2)) $ echo $RESPOSTA 16 Expressões aritméticas + A construção utilizada para indicar uma expressão aritmética É  $(( ... )) .  Sim, com 2 parênteses!
$ test EXPRESSÃO $ test [ EXPRESSÃO ] $ man test $ test "a" = "a" && echo "é igual!" é igual $ echo $? 0 $ [ "a" = "b" ] && echo "é igual!" $ echo $? 1 O comando test + 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 test "a" -gt 25  #poderia usar [ "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 VARIAVEL in LISTA do comandos  done for + 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 COMANDO do comandos  done while 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 VARIAVEL in caso1) comando; comando;; caso2) comando; comando;; *) comando;; esac case 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 .
funcao() { comandos  } funções pedir_nome() { echo -n "Digite seu nome: " read NOME } pedir_nome echo "Olá $NOME!"
cut -d : -f 2 /etc/passwd # $0 = cut # $1 = -d # $2 = : # $3 = -f # $4 = 2 # $5 = /etc/passwd # $# = 5 # $* = -d : -f 2 /etc/passwd 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
Agora é apenas codigo! http://github.com/hugomaiavieira/shellscript-scti2011
http://www.tldp.org/guides.html Advanced Bash - Scripting Guide Referências http://www.novatec.com.br/livros/shellscript/ Shell Script Professinal – Aurélio Marinho Jargas http://en.wikipedia.org/wiki/Shebang_(Unix) Sobre o hashbang

Introducao ao Shell Script

  • 1.
    Introdução ao Shell Script Hugo Maia Vieira @hugomaiavieira novembro de 2011 Esta obra é licenciada sob uma licença Creative Commons
  • 2.
    ¿O que éshell? ¿O que é script? ¿O que é Shell Script? scripts em shell == Shell Scritp ==
  • 3.
    O Shell, terminal,prompt, linha de comando
  • 4.
    chmod +x arquivo Localização do interpretador: hashbang¹ (#!) Scripts executáveis (Unix) #!/bin/sh #!/usr/bin/env sh ou ¹ http://en.wikipedia.org/wiki/Shebang_(Unix)
  • 5.
    $ VARIAVEL='bla blabla' $ echo $VARIAVEL bla bla bla Variáveis + Não pode haver espaços ao redor do igual + O comando unset apaga a variável + É possível armazenar a saída de um comando usando o $( ... ) : $ DATA=$(date +%x) $ echo $DATA 09-11-2011
  • 6.
    $ echo $((5*8))40 $ SOMA=$((2+5+1)) $ echo $SOMA 8 $ RESPOTA=$((SOMA*2)) $ echo $RESPOSTA 16 Expressões aritméticas + A construção utilizada para indicar uma expressão aritmética É $(( ... )) . Sim, com 2 parênteses!
  • 7.
    $ test EXPRESSÃO$ test [ EXPRESSÃO ] $ man test $ test "a" = "a" && echo "é igual!" é igual $ echo $? 0 $ [ "a" = "b" ] && echo "é igual!" $ echo $? 1 O comando test + Para a sintaxe usando colchetes, deve ter um espaço entre a expressão e os colchetes .
  • 8.
    if COMANDO thencomandos 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 test "a" -gt 25 #poderia usar [ "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 VARIAVEL inLISTA do comandos done for + 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 + Umcomando 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 COMANDO docomandos done while 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 VARIAVEL incaso1) comando; comando;; caso2) comando; comando;; *) comando;; esac case 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.
    funcao() { comandos } funções pedir_nome() { echo -n "Digite seu nome: " read NOME } pedir_nome echo "Olá $NOME!"
  • 14.
    cut -d :-f 2 /etc/passwd # $0 = cut # $1 = -d # $2 = : # $3 = -f # $4 = 2 # $5 = /etc/passwd # $# = 5 # $* = -d : -f 2 /etc/passwd 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
  • 15.
    Agora é apenascodigo! http://github.com/hugomaiavieira/shellscript-scti2011
  • 16.
    http://www.tldp.org/guides.html Advanced Bash- Scripting Guide Referências http://www.novatec.com.br/livros/shellscript/ Shell Script Professinal – Aurélio Marinho Jargas http://en.wikipedia.org/wiki/Shebang_(Unix) Sobre o hashbang