Buscar

PROGRAMAÇÃO PARA SERVIDORES

Prévia do material em texto

Programação para
Servidores
Aula 8 - Programação avançada 1 – Funções
INTRODUÇÃO
Nesta aula, vamos estudar as funções. Por vezes, encontramos abordagens que acabam gerando dúvidas. No nosso
estudo, vamos demonstrar que as funções nos permitem otimizar partes repetitivas nos códigos.
Quando trabalhamos com shell script, basicamente agregamos uma sequência de comandos para tarefas variadas.
Nesse mesmo enfoque, dentro de um script, temos diversas ações que se repetem. Para que não precisemos
reescrever o mesmo código diversas vezes, usamos as funções.
Aqui, veremos ainda que cada parte do kernel, quando “ligado”, ocupa um espaço de memória e passa a ser controlado
pelo SO. Os scripts bash possuem funcionalidades que permitem o gerenciamento de processos e a execução paralela
de tarefas.
Nos nossos exercícios, os efeitos do processamento paralelo serão tímidos, mas, em estações com elevado nível de
processamento, o paralelismo (pipeline) é bastante desejável.
OBJETIVOS
Identi�car a sintaxe de funções em shell script;
Explicar o procedimento de passagem de parâmetros e código de retorno;
Reconhecer o escopo de uma variável em uma função.
FUNÇÕES
Uma função é um bloco de código que implementa um conjunto de operações para desempenhar uma tarefa
especí�ca.
Tal função pode, então, ser chamada a partir de múltiplos lugares de dentro do programa principal ou de outras
funções.
Ela deve ser de�nida entes de ser utilizada. Isso pode ser feito no início do script ou em um arquivo separado e incluído
no programa com o comando "." (ponto).
A sintaxe para a de�nição de uma função é:
Por exemplo, o trecho de código:
Note que esse exemplo exibe duas características:
Chamada e execução de funções; e
Uma função chamada de dentro de outra.
VAMOS PRATICAR!
Tente montar o script funcao1.sh com a função acima.
Resposta Correta
ARGUMENTOS E STATUS DE SAÍDA
Funções podem processar argumentos passados durante sua chamada. Assim como scripts, elas recebem
argumentos através das variáveis $1, $2, $3 etc.
O exemplo abaixo é de uma função que utiliza parâmetros:
As funções enxergam somente os parâmetros passados a elas, mas não acessam variáveis do script.
Vamos a um script que demonstra o acesso às variáveis dentro das funções.
Empregando o exemplo acima, construiremos o script funcao2.sh, que recebe 3 valores inteiros a, b e c.
Ao chamar a função, apenas os dois primeiros são passados a elas.
Vamos testar o que ocorre se tentarmos acessar de dentro da função a variável que não foi passada a ela.
Observe alguns pontos importantes:
Funções podem retornar valores de status de saída (exit status) similares aos retornados por um comando.
O status de saída pode ser de�nido explicitamente pelo comando return. Caso contrário, ele será o valor retornado pelo
último comando executado na função.
O valor 0 signi�ca que foi executado com sucesso.
O status de saída pode ser veri�cado pelo script acessando a variável $?.
O comando return termina a execução de um script e opcionalmente retorna um valor de saída.
O valor de saída deve ser obrigatoriamente um valor numérico.
VARIÁVEIS LOCAIS
Uma variável pode ser declarada com o comando local para que seu escopo �que reduzido à função na qual ela foi
de�nida.
Veja a utilização de uma variável que não foi de�nida com escopo local:
Depois que ela foi de�nida com escopo local:
Agora, para praticar os conceitos que acabamos de ver, combine os exemplos acima em um script que utilize variáveis
locais (funcao3.sh).
Resposta Correta
RECURSIVIDADE
A programação shell script permite que funções realizem chamadas recursivas. Porém, há um impacto signi�cativo no
desempenho do sistema.
Deve-se ter atenção especial à utilização de variáveis quando estiver utilizando funções com chamadas recursivas.
O exemplo abaixo exibe a série de Fibonacci de forma recursiva.
Construa o script funcao3.sh para testá-lo:
VARIÁVEIS DE AMBIENTE
São as variáveis ativas no sistema em determinado momento. A lista de variáveis pode ser obtida com o comando
“declare”.
Muitas dessas variáveis podem e são empregadas dentro de scripts.
O script abaixo utiliza algumas delas:
INCLUDES EM SHELL SCRIPT
Fonte da Imagem: Iconic Bestiary / Shuttertock
Algumas rotinas se repetem em diversas situações e são necessárias em diversos scripts.
É possível utilizar os conteúdos de diversos arquivos em um script sem necessidade de reescrevê-los, basta referenciá-
los em seu código. É o que costumamos chamar de biblioteca do programador.
Se você, por exemplo, possui diversos scripts que devem ser executados apenas pelo usuário “root”, basta criar um
script que realize o teste, envie mensagens e impeça que outro usuário o execute.
Nesse caso, seria muito interessante que houvesse um arquivo com essas rotinas, acessível a diversos scripts. Mais
ainda o arquivo a ser incluído deve estar no mesmo diretório ou em diretório listado nos caminhos padrão do sistema,
listados na variável $PATH ou com o comando path.
Vamos a um exemplo:
Rotina que testa se usuário é o root, testa-root.sh.
Arquivo que utiliza a biblioteca:
Outras funções do arquivo referenciado em source poderiam ser chamadas no script principal, ou de outros scripts
com rotinas semelhantes.
ATIVIDADE
Desenvolva um script que possua uma função para receber temperaturas em Fahrenheit e converta em Celsius.
A fórmula que relaciona essas medidas de temperatura é C/5 = (F - 32)/9.
Resposta Correta
Glossário

Continue navegando