1. Introdução aos scripts em BASH Prof. André Leon S. Gradvohl, Dr. andre.gradvohl@gmail.com
2. Plano de apresentação O que são shell scripts? Comandos básicos do Linux Estruturas básicas do BASH Comandos condicionais Comandos de repetição Exemplos de scripts mais elaborados 2
3. O que são Shell Scripts Shell scripts são pequenos programas escritos na linguagem do shell. Os shell scripts normalmente são usados para executar tarefas administrativas mais complexas, i. e., aquelas que envolvem dois ou mais comandos básicos. Os shells mais comuns são os seguintes BourneAgain Shell (/bin/bash) C Shell (/bin/csh) Turbo C Shell (/bin/tcsh) Korn Shell (/bin/ksh) 3
4. Comandos Básicos do Linux cd Mudança de Diretório Ex: cd / Ir para o diretório raiz ls Listar os arquivos e diretório do local corrente Ex: ls Variações ls –a ls –l 4
5. Comandos Básicos do Linux pwd Mostra a localização atual Ex: pwd mkdir Cria um Diretório Ex: mkdiraula11 5
6. Comandos Básicos do Linux cat Exibe o Conteúdo de um Arquivo Ex: cat aula.txt Ex: cat –n aula.txt cp Copia de arquivos Ex: cp aula.txt aula2.txt Ex: cp aula.txt /tmp 6
7. Comandos Básicos do Linux date Exibe e altera a data e hora do computador Ex: date Ex: date +%d/%m/%Y Ex: date 1708203006 Primeiro mês, dia, hora, ano mv Mover ou renomear arquivos Ex: mv aula.txt aula3.txt Ex: mv aula3.txt /aula/aula2 7
8. Comandos Básicos do Linux clear Limpar a tela Ex: clear df Saber a quantidade de disco ocupada Ex: df –H free Verificar a utilização da memória RAM Ex: free -m 8
9. Comandos Básicos do Linux rm ou rmdir apagar arquivos e diretórios Ex: rm aula2.txt Ex: rm –d aula2 man Manual on-line dos comando do linux Ex: man date Ex: mancp 9
10. Estrutura básica dos scripts Bashshell #!/bin/bash echo “Ola Mundo!” Importante: O arquivo que contém o script precisa ter permissão para execução. Para tanto, é necessário executar o comando: chmod +x arquivo.sh 10
11. Estrutura básica dos scripts Bashshell – Variáveis As variáveis nos shell scripts não têm tipo e são criadas dinamicamente. Exemplo: VAR1=1; NOME=“Ze” A atribuição de variáveis é feita com o operador =. Para acessar o conteúdo das variáveis, utiliza-se o operador $. 11
12. Estrutura básica dos scripts Bashshell - Leitura #!/bin/bash echo “Digite seu nome” read NOME echo “Ola $NOME” 12
13. Estrutura básica dos scripts Bashshell – Comandos Condicionais #!/bin/bash echo “Digite o nome de um arquivo” read ARQ if [ -e $ARQ ]; then echo “$ARQ existe no diretorio atual” else echo “$ARQ nao existe no diretorio atual” fi 13
14. Estrutura básica dos scripts Bashshell – Comandos Condicionais Observações: O que aparece entre colchetes ([ ]) é o teste lógico que será feito. O teste entre colchetes pode aceitar as seguintes opções: -d arquivo: verdade se o arquivoexiste e é um diretório.-e arquivo: verdade se o arquivoexiste.-f arquivo: verdade se o arquivoexiste e é um arquivo regular. 14
15. Estrutura básica dos scripts Bashshell – Comandos Condicionais O teste entre colchetes também funciona com argumentos numéricos: arg1 -eq arg2: verdade se o arg1 for igual a arg2. arg1 -ltarg2: verdade se arg1formenorquearg2. arg1 -gtarg2: verdade searg1for maiorquearg2. arg1 -ne arg2: verdade searg1não for igual a arg2. arg1 -le arg2: verdade se arg1arg2. arg1 -gt arg2: verdade searg1 arg2. arg1 -ne arg2: verdade searg1≠ arg2. 15
16. Estrutura básica dos scripts Bashshell – Comandos Condicionais Para strings, os comandos são os seguintes: arg1 == arg2: verdade se o arg1 for igual a arg2. arg1 != arg2: verdade se arg1fordiferente de arg2. 16
17. Estrutura básica dos scripts Bashshell – Comandos Condicionais #!/bin/bash echo “Digite seu nome” read NOME if [ $NOME == “Andre” ]; then echo“Nome Correto!” exit 0 else echo “O nome $NOME não esta correto” exit 1 fi Código de saída 17
18. Estrutura básica dos scripts Bashshell – Comandos Condicionais Além do comando if, o BASH aceita o comando case. Veja um exemplo: #!/bin/bash echo “Digite um animal:” read ANIMAL echo -n “O $ANIMAL tem " case $ANIMAL in cavalo | cachorro | gato) echo -n “quatro";; homem | canguru ) echo -n "two";; *) echo -n “um numero desconhecido de";; esac echo" patas." 18
19. Estrutura básica dos scripts Bashshell – Comandos de repetição o BASH também aceita comandos de repetição como os comandos for ewhile. Exemplo de while: #!/bin/bash X=0; while [ $x –lt 10 ]; do echo “x = $X” let X = $X+1 done 19
20. Estrutura básica dos scripts Bashshell – Comandos de repetição O comando for temalgumas peculiaridades pouco comuns em linguagens de programação. Exemplo de for: #!/bin/bash for i in 1 2 3 do echo $i done 20 A cada iteração, o i assume um desses valores
21. Estrutura básica dos scripts Bashshell – Comandos de repetição Variação do comando for: #!/bin/bash for i in {1 .. 10} do echo $i done 21
22. Estrutura básica dos scripts Bashshell – Comandos de repetição Outra variação do comando for: #!/bin/bash LIMITE=10 for (( a=1; a<=LIMITE; a++)) do echo –n “$a ” done 22
23. Exemplos de scripts mais elaborados Exemplo: Script para listar apenas os diretórios. #!/bin/bashecho "Script para listar apenas os diretorios"CONT=0for ARQ in *; do if [ -d $ARQ -a $ARQ != "." -a $ARQ != ".." ]; then echo -e "$ARQ" let CONT=$CONT+1; fidoneif [ $CONT -eq 0 ]; then echo "Nao foram encontrados diretorios" exit 1else echo "Foram listados $CONT diretorios" exit 0fi 23