Shell script
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
810
On Slideshare
809
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
30
Comments
0
Likes
2

Embeds 1

http://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Shell Script @deniscostadsc
  • 2. DENIS COSTA
  • 3. DENIS COSTACoding Dojo
  • 4. Tópicos:• O que é shell?• Sabores de shell• O que é Shell Script?• Shell Script é...• Redirecionamentos• Caracteres Curinga• Sintaxe• Ajuda
  • 5. O que é shell?
  • 6. hardware kernelaplicativos SHELL usuário
  • 7. Sabores de 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 # scriptrm *~$ ./myscript.sh
  • 11. Shell Script é...
  • 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...
  • 14. Redirecionamento
  • 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
  • 21. Caracteres Curinga
  • 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 ?.pdfa.pdf b.pdf c.pdf$ ls [abc].pdfa.pdf b.pdf c.pdf$ ls [!a].pdfb.pdf c.pdf$ ls a.{pdf,jpg}a.jpg a.pdf
  • 25. Sintaxe
  • 26. #!/bin/bash# Atribuindo valores as variáveisnumero=1text=TextoSemAspasMasSemEspacostext2=”Texto com aspas e com espacos”# Usando valores das variáveisecho $numeroecho $textecho $text2
  • 27. #!/bin/bash# Substituição de variáveisvar=”Ola”echo $var# echo Ola
  • 28. #!/bin/bash# Substituição de comandosfile `which bash`# file /bin/bashecho $(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 especiaisecho $1 # 1° parametroecho $2 # 2° parametroecho $11 # 1° parametro seguido de 1echo ${11} # 11° parametro
  • 31. #!/bin/bash# Ainda existem variáveis para acessar# os parametros de várias formasecho $* # parametros separados pelo $IFSecho $@ # parametros “p1” “p2”echo $# # numero de parametros
  • 32. #!/bin/bash# O if verifica o exit status do comandoif grep "denis" texto.txtthen echo "Achei ele"else echo "Ele escapou"fi
  • 33. #!/bin/bash# Para fazer comparações use o builtin# command test...a=1if test $a == 1then echo "É igual"else echo "É diferente"fi
  • 34. #!/bin/bash# ... ou sua sintaxe com [ ]a=1if [ $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 10do echo $numberdone
  • 36. #!/bin/bash# Se você quisesse iterar sobre uma grande# sequência de númerosfor number in $(seq 100)do echo $numberdone
  • 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 $numberdone
  • 38. #!/bin/bash# CSV Parser de pobrecomma=,new_line=old_IFS=$IFSIFS=$new_linefor line in $(cat cars.csv); do IFS=$comma for item in $line; do echo -ne "$itemt" done echo “”doneIFS=$oldIFS
  • 39. #!/bin/bash# O while funciona como o if e executa# enquanto o comando verificado retorna exit# status 0while ping -c 2 www.google.comdo echo “Sim, temos internet!!”done
  • 40. #!/bin/bash# O until é muito semelhante ao while mas# executa enquanto o exit status é diferente# de 0until ping -c 2 www.google.comdo echo "Ainda estamos sem internet 8("done
  • 41. #!/bin/bash# O case permite vericar o conteúdo de uma# variável várias vezescase $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 functionfunction nome_da_funcao(){ comando ...}
  • 43. #!/bin/bash# A invocação de funções e a# passagens de parâmentros é# feito como os scriptsfuncao parametro1 parametro2
  • 44. #!/bin/bashfunction 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 burrofunction 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 fidone
  • 50. #/bin/bash# URL checker inteligentefunction 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
  • 53. Obrigado =)