Oficina de shell script

1,346 views
1,208 views

Published on

Shell Script

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,346
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
53
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Oficina de shell script

  1. 1. Oficina de ShellScript Segunda Parte Wildcards Variáveis de Ambiente Comandos em Shell Script Parâmetros para o programa Mais comandos /dev/null Bruno L. Albrecht Felipe A. Chies  PET Computação UFRGS  
  2. 2. Wildcards  Recurso utilizado para especificar um ou mais  arquivos/diretório de uma vez só.  Permite a filtragem do que será listado/copiado/ apagado/etc  É uma feature que deixa a shell “mais  poderosa” que a GUI no trato de arquivos.  Quatro tipos:  *, ?, [ ] e { }   
  3. 3. Wildcards  *: qualquer coisa! (zero ou mais caracteres)  rm *.txt → apaga todos os arquivos que terminem  com .txt  ?: um único caractere qualquer!  rm log?.txt → log1.txt, loga.txt, lob[.txt, etc  rm *?.* → todos os arquivos não ocultos  Obs.: para nos referirmos a um arquivo que um  wildcard no nome, utilizamos wildcard   
  4. 4. Wildcards  [ ] : um dos caracteres listados (ou não)  [abcd] : a ou b ou c ou d  [a­d] : qualquer um no intervalo de a a d  [!abcd] : qualquer um, menos a,b,c,d  [!a­d] : qualquer um, menos os que estão no  intervalo de a a d  Exemplo:  sudo umount /dev/[hs]d[a­d][1­9]  desmonta todos os dispositivos   
  5. 5. Wildcards  { } : cada opção separada por vírgulas é  considerada apenas uma vez  echo t{r,igr,rist}es  tres tigres tristes  echo alun{o,a}{,s}  aluno alunos aluno alunos   
  6. 6. ShellScript: Introdução Shell  Interpretador de comandos; Script  É uma descrição geral de qualquer programa  escrito em linguagem interpretada, ou seja, não  compilada;  Temos script em PHP, Ruby, script em PERL e  também Shell Script;
  7. 7. Objetivos Facilitar as tarefas repetidas do adminstrador:  evita a redigitação de comandos;  podem ser agendados para execução através da  tabela crontab (man cron); Scripts podem fazer tarefas complexas  podemos combinar diversos comandos, com  controladores de fluxo e variáveis; São “rápidos” de serem criados e não precisam  ser compilados;
  8. 8. Hello World Muito simples!!! Muito simples: Crie o arquivo: gedit hello.sh & #!/bin/bash echo "Hello World!!!" Para executá­lo:  chmod +x hello.sh  ./hello.sh
  9. 9. Variáveis O bash reconhece uma variável quando ela  começa com $; Declaração: var=“valor”  valor pode ser número, frase, outras variáveis ou  comando.   Pode ser expressado entre “ ”(aspas duplas),    (apóstrofes) ou ` `(crases);
  10. 10. Variáveis Aspas duplas: valor da variável será  interpretado;  variavel="Meu login é: $USER"  echo $variavel  Meu login é: Bruno Apóstrofes: declaração literal  variavel=Meu login é: $USER  echo $variavel  Meu login é: $USER
  11. 11. Entre crases Crases: vão interpretar os comandos  declarados. Se forem combinados com texto  numa expressão, deve­se usar as aspas  juntamente!!!  variavel=“Meu diretório atual é: `pwd`”  echo $variavel  Meu diretório atual é: /home/bruno  Obs.: É o mesmo que $(comando)  var=$(pwd)
  12. 12. PARÂMETROS  É um array de parâmetros!  De $1 a $9  $0 → nome do programa  $# → quantidade de parâmetros  $* → conjunto de todos os parâmetros  Shift n → utilizado para deslocar n parâmetros   
  13. 13. Variáveis de Ambiente  São variáveis LOCAIS ou GLOBAIS já  definidas pelo sistema operacioal  Podem ser redefinidas  Exemplo:  O nome do usuário é determinado a partir de uma  variável de ambiente: $USER   
  14. 14. Variáveis de Ambiente  Principais variáveis globais:  PATH diretório onde podem ser encontrados os  executáveis  USER nome (login) do usuário  HOME diretório home do usuário  HOST nome do host (máquina)  SHELL shell ativo  PS1 mensagem no terminal  IFS separador de parâmetros (default: ” ”)  A lista completa pode ser obtida através do comando   
  15. 15. Variáveis de Ambiente Para definir uma variável de ambiente GLOBAL:  export VARIAVEL=conteúdo Para definir uma variável de ambiente LOCAL:  VARIAVEL=conteudo Exemplo:   export PATH=$PATH:/meu_dir Obs.: esta forma de definir variáveis é   TEMPORÁRIA, ou seja, apenas enquanto o shell    estiver ativo
  16. 16. Variáveis de Ambiente  Para definir variáveis globais e locais  PERMANENTEMENTE, devemos alterar os  seguintes arquivos:   ~./bashrc → somente para o usuário atual  /etc/bash.bashrc → para todos os usuários  Imprimir o conteúdo de uma variável:  echo $VARIAVEL  Deletar uma variável:   unset VARIÁVEL  
  17. 17. Expressões aritméticas  Para o Shell executar operações aritméticas,  devemos utilizar $((expressão))  echo $((2+2))  var1=$((var2+var1))  Ou então, o comando let:  let var1++  let var2­­   
  18. 18. Expressões aritméticas  x++, ++x, x­­, ­­x: [pós,pré]­[in,de]cremento y  x**y: potenciação (x )  x*y, x/y, x%y: multiplicação, divisão, resto  <, <=, >, >=, ==, !=: comparações  &&, ||: AND e OR lógicos   
  19. 19. Comandos: test  Descrição: testar qualquer coisa!  test $var1 ­lt $var2  Obs.: resultado em $?   
  20. 20. if  O comando if testa o STDERR (variável de  ambiente $?), mas, para ficar semelhante à  sintaxe do C, utilizamos o comando test If test $variavel ­gt 10 If [ $variavel ­gt 10 ] then then echo ”é maior que 10” echo ”é maior que 10” else else echo ”é menor que 10” echo ”é menor que 10” fi fi  Atalho do comando test no if:   [ expressão ] → não do espaço antes e depois da    expressão
  21. 21. case Para não precisarmos concatenar milhares de  ifs, utilizamos o case: if [ $var ­eq 1 ] case $var in then  1) <comandos> ;; <comandos> 2) <comandos> ;; elif [ $var ­eq 2 ] 3) <comandos> ;; then 4) <comandos> ;; <comandos> elif [ $var ­eq 3 ] *) <comandos> then esac <comandos> elif [ $var ­eq 4 ] ● Não há ;; no último grupo ● Para fechar o case, usamos “esac” then ● Podemos usar wildcards nos padrões de  <comandos> else grupos. ex.: [1­4], ?, ??, 3|4, ?0|?5, [1234]  <comandos> etc fi
  22. 22. For for numero in um dois três quatro cinco do       echo "Contando: $numero" done  Um comando muito útil para utilizar o for é o seq,  que gera sequências de números:for num in $(seq 10) for num in $(seq 6 10)do do <...>  <...> done for num in $(seq 0 2 10) done do <...> done
  23. 23. For for par do       echo "Parâmetro: $par" done Neste caso, não colocamos o “in” depois da  variável. Isto serve para a variável (no caso  “par”) receber cada parâmetro passado para o  programa a cada laço do for.
  24. 24. For Podemos ainda usar uma sintaxe parecida com  a do C. for (( ; i<=9 ; )) for ((i=0 ; i<=9 ; i++)) do do let i++;       echo ­n “$i “ echo ­n “$i “ done done Outra forma de for for arq in * 1 ­> arquivo1.txt 2 ­> arquivo2.sh do 3 ­> arquivo3.bla let i++; 4 ­> arquivo4.doc echo “$i ­> $arq” etc... done
  25. 25. Break e Continue  break: pára o laço  continue: ignora o que tem embaixo e volta  para o início do laçofor ((i=0 ; ; i++)) $ ./testefor 0 1 2 3 4 5 6 7 8 9do echo ­n “$i “ for ((i=0 ; ; i++)) if [ i ­lt 9 ] do $ ./testefor2 then echo ­n “$i “ 0 1 2 3 4 5 6 7 8 9 continue if [ i ­eq 9 ] else then break break;done done
  26. 26. While Utilizando um contador com o while: while : doi=0       if test ­f /tmp/lockwhile test i ­le 10       thendo               echo "Aguardando lock..."      i=$((i+1))               sleep 1      echo "Contando: $i"       elsedone               break       fi done Para um loop infinito (saindo com break):
  27. 27. Until  Igual ao while, mas o teste é feito após os  comandos serem executados i=0 $./testeuntil until [ $i ­eq 9 ] 0 1 2 3 4 5 6 7 8 do $ echo ­n “$i ” let i++ done $ ./testeuntil2 until ! who | grep pet pet pts/0 Jan 4 16:47 (143.54.12.140) do pet pts/0 Jan 4 16:48 (143.54.12.140) sleep 60 ... done pet pts/0 Jan 4 17:39 (143.54.12.140) echo ­n “usuário pet foi embora!!” usuário pet foi embora às 17:39h!! echo “às $(date “%H:%Mh”)” $
  28. 28. Interação com o usuário read: recebe uma lista de parâmetros e salva nas  variáveis  Se houver mais parâmetros do que variáveis, a última  recebe o resto echo: imprime uma mensagem no STDOUT $ read var1 var2 var3 Curso de ShellScript $ read var1 var2 $ echo $var1 Curso de ShellScript Curso $ echo $var1 $ echo $var2 Curso de $ echo $var2 $ echo $var3 de ShellScript ShellScript
  29. 29. Leitura de Arquivos Duas formas: Cat arquivo.txt | while read LINHA while read LINHA do do echo $LINHA echo $LINHA done < arquivo.txt done O while termina quando o read encontra um  EOF (leitura mal sucedida)

×