Baixe o app para aproveitar ainda mais
Prévia do material em texto
Superior de Analise e Desenvolvimento de Sistemas Serviços Básicos de Redes para WEB Fernando Costenaro Silva fernando.costenaro@sc.senai.br Shell Script • Introdução • Comandos • Variáveis • Comparação • Laços de repetição • Funções • Vetores • Getopts Shell Script Introdução • Script é um arquivo com várias instruções para serem executadas pelo Shell que é o interpretador de comandos. • Com ele podemos automatizar muitas tarefas no Linux criando grandes facilidades. Comandos • Alguns comandos básicos: Comandos • Podemos utilizar todos os comandos aprendidos nas aulas anteriores também: Comandos • Podemos utilizar todos os comandos aprendidos nas aulas anteriores também: Criando um Shell Script • Com o editor de texto de sua escolha, crie um arquivo. • Ex.: #nano aula #vi aula • A primeira linha do script deve ser: #!/bin/bash Criando um Shell Script • Para tornar o script executável devemos dar permissão de execução para o dono do arquivo: • $ chmod +x aula • $ chmod 744 aula • Para executar o script: $ ./script Variáveis • Para armazenar ou atribuir um valor a uma variável, basta colocar o nome da variável, sinal de “ = “ colado ao nome escolhido e, colado ao sinal de igual, o valor estipulado. • Ex.: VAR_1=123 • Por padrão, as variáveis são escritas em UPPERCASE. • Podem ser utilizados letras (a-z e A-Z), números (0-9) e _. Variáveis • É possível determinar que a variável seja apenas de leitura com o comando “readonly VAR”. • Ex.: VAR=“abc” readonly VAR VAR=“123” (erro: This variable is read only.) Variáveis • Para acessar o valor de uma variável é preciso adicionar o cifrão ($) no início da mesma: $VAR. Assim, para imprimir o valor de uma variável utilizamos o comando “echo $VAR”. • Ex.: VAR=123 echo “valor = $VAR” Variáveis • Para deletar a variável da lista de variáveis do shell basta utilizar o comando “unset VAR”. Não é possível utilizar o comando unset em variáveis configuradas como readonly. • Ex.: VAR=123 echo $VAR unset VAR echo $VAR Variáveis • Para ler de um arquivo utilizamos um comando de leitura com o caminho e o nome do arquivo: VAR=$(cat /etc/arquivo) • Para ler o valor digitado pelo usuário: read VAR Variáveis • Exercícios: 1 - Criar um script com 2 variáveis. Os valores das variáveis devem ser lidos do usuário, e em seguida, o script deve imprimir o nome e o valor das variáveis. 2 - Criar um script com 2 variáveis. O script deve perguntar o local de um arquivo a ser lido (ex.: /etc/arq1) e armazenar em uma variável. Em seguida, deve ler e armazenar o conteúdo do arquivo na outra variável. Por fim, imprima o nome e o valor das variáveis. VAR=$(cat /etc/arquivo) Operadores • Existem vários tipos de operadores suportados por cada shell. No BASH temos operadores: • Aritiméticos • Relacionais • Booleanos • Strings • Arquivos Operadores Aritiméticos • O BASH utiliza outros programas internos para executar operações aritméticas, como o expr _, let _, $((_)), bc _, awk, python, etc. Exemplo: VAR1=$(expr 1 + 1) let VAR2=$VAR1+1 VAR3=$(($VAR2+1)) VAR4=$(echo $VAR3+1 | bc) VAR5=$(awk "BEGIN {print $VAR4+1; exit}") VAR6=$(python -c "print $VAR5+1") Operadores Aritiméticos Operadores Aritiméticos • Obs.: Todas as expressões condicionais devem seguir o formato: [ $A == $B ], com espaços entre os colchetes, variáveis e o operador. Operador Função + Adição - Subtração * Multiplicação / divisão % Resto da divisão = Atribuição == Igualdade != Desigualdade Operadores Relacionais • O Bourne Shell suporta os seguintes operadores relacionais que são específicos para valores numéricos. Esses operadores não funcionam para valores de sequência de caracteres, a menos que seu valor seja numérico. Operador Função exemplo Equivalente C -eq Igualdade [ $A –eq $B ] A == B -ne Desigualdade [ $A –ne $B ] A != B -gt Maior que [ $A –gt $B ] A > B -lt Menor que [ $A –lt $B ] A < B -ge Maior ou igual a [ $A –ge $B ] A >= B -le Menor ou igual a [ $A –le $B ] A <= B Operadores Booleanos e String • Booleanos: • String: Operador Função exemplo Equivalente C ! Negação [ !A ] !A -o OR [ $A –gt $B –o $A –gt $C ] A >= B || A >= C -a AND [ $A –gt $B –a $A –gt $C ] A >= B && A >= C Operador Função exemplo = Igualdade [ $A = $B ] != Desigualdade [ $A != $B ] -z Size = 0 [ –z $A ] -n Size != 0 [ -n $A ] str String não vazia [ $A ] Comparação • O Bourne Shell suporta as seguintes expressões condicionais: • if...fi • if...else...fi • if...elif...else...fi • case...esac Comparação • A expressão if...fi é a instrução de controle fundamental que permite à Shell tomar decisões e executar declarações condicionais: if [ expressão ] then #executa se a expressão for verdadeira fi Comparação • A expressão if...else...fi é a instrução de controle que permite à Shell tomar outra decisão caso o resultado da expressão seja falsa. if [ expressão ] then #executa se a expressão for verdadeira else #executa se a expressão 1 for falsa fi Comparação • A expressão if...elif...else...fi é a instrução de controle que permite à Shell tomar uma decisão com base em diversas opções. if [expressão_1 ] then #executa se a expressão 1 for verdadeira elif [expressão_2 ] then #executa se a expressão 2 for verdadeira else #executa se as expressões não forem verdadeiras fi Comparação • Se temos diversas opções para uma mesma variável, podemos utilizar a expressão case...esac, em vez de utilizar a expressão if...elif...else...fi: case $VAR in 1) # equivalente à case 1 #executa_algo ;; 2) # equivalente à case 2 #executa_algo ;; *) #default #executa_algo ;; esac Comparação • Exercícios: 3 – Ler três números do usuário e mostrar o maior utilizando a expressão if if...elif...else...fi. 4 – Criar um menu com 5 opções. Exibir para o usuário o menu, que vai escolher um número entre 1 e 5. Com base na escolha, informar uma descrição do item selecionado. Utilize a expressão case...esac. Comparação • Exercícios: 5a – Criar um arquivo com nomes e telefones (pelo menos 5): Fulano de Tal;(49) 3028-0103 Pedro de Cabral;(51) 4047-3030 5b – Criar um script que busque (grep) no arquivo um nome digitado pelo usuário e mostre o telefone encontrado (cut). Informar também se o nome não foi encontrado.
Compartilhar