Shell script

751 views
673 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
751
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
45
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Shell script

  1. 1. Shell Script @deniscostadsc
  2. 2. DENIS COSTA
  3. 3. DENIS COSTACoding Dojo
  4. 4. Tópicos:• O que é shell?• Sabores de shell• O que é Shell Script?• Shell Script é...• Redirecionamentos• Caracteres Curinga• Sintaxe• Ajuda
  5. 5. O que é shell?
  6. 6. hardware kernelaplicativos SHELL usuário
  7. 7. Sabores de shell
  8. 8. Bourne Shell (sh)Bourne-Again Shell (bash)Almquist Shell (ash)Debian Almquist Shell (dash)Z Shell (zsh)Korn shell (ksh)...
  9. 9. O que é Shell Script?
  10. 10. $ rm *~ # linha de comando$ cat myscript.sh # scriptrm *~$ ./myscript.sh
  11. 11. Shell Script é...
  12. 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. 13. ...horrível para multiplataforma...inpensável para alto desempenho...lento para IO pesado...
  14. 14. Redirecionamento
  15. 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. 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. 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. 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. 19. $ ## Standard Input$$ comando < arquivo$ comando <<< texto
  20. 20. $ ## Pipe$ # Redireciona a saída padrão do$ # comando1 para a entrada padrão do$ # comando2$ comando1 | comando2
  21. 21. Caracteres Curinga
  22. 22. Caracteres curinga parecem Regex,mas são DIFERENTES.
  23. 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. 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. 25. Sintaxe
  26. 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. 27. #!/bin/bash# Substituição de variáveisvar=”Ola”echo $var# echo Ola
  28. 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. 29. $ # A passagens de parametros dos scripts$ # é feita de maneira posicional$$ ./myscript.sh parametro1 paramentro2
  30. 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. 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. 32. #!/bin/bash# O if verifica o exit status do comandoif grep "denis" texto.txtthen echo "Achei ele"else echo "Ele escapou"fi
  33. 33. #!/bin/bash# Para fazer comparações use o builtin# command test...a=1if test $a == 1then echo "É igual"else echo "É diferente"fi
  34. 34. #!/bin/bash# ... ou sua sintaxe com [ ]a=1if [ $a == 1 ]then echo "É igual"else echo "É diferente"fi
  35. 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. 36. #!/bin/bash# Se você quisesse iterar sobre uma grande# sequência de númerosfor number in $(seq 100)do echo $numberdone
  37. 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. 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. 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. 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. 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. 42. #!/bin/bash# A declaração de funções é feito com a# palavra reservda functionfunction nome_da_funcao(){ comando ...}
  43. 43. #!/bin/bash# A invocação de funções e a# passagens de parâmentros é# feito como os scriptsfuncao parametro1 parametro2
  44. 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. 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. 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. 47. function soma(){ echo $(($1 + $2))}reduce "soma" "1 2 3 4"# 10
  48. 48. function concat(){ echo $1$2}reduce "concat" "O Rato Roeu A Roupa Do Rei De Roma"# ORatoRoeuARoupaDoReiDeRoma
  49. 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. 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. 51. Ajuda
  52. 52. ● $man bash● http://aurelio.net/shell/● http://tldp.org/LDP/abs/abs-guide.pdf
  53. 53. Obrigado =)

×