Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 2 - Programação Script 1 – Variáveis e testes INTRODUÇÃO Na aula 2, vamos começar a construir os primeiros scripts. Inicialmente com reduzida complexidade e depois apresentaremos os conceitos de variáveis, sua simbologia e sintaxe. Veremos também os argumentos ou, melhor, os valores enviados ao script. Finalizaremos com as estruturas de decisão if / then / else / � (sim, termina com � – if ao contrário) e case, que termina com esac. OBJETIVOS Explicar a substituição de variáveis em shell script; Identi�car os tipos de variáveis especiais e as formas de proteção de variáveis com aspas; Identi�car os mecanismos de testes em shell script; Aplicar as estruturas de decisão if/else. VARIÁVEIS Durante seu curso, você já deve ter ouvido o termo “variável” diversas vezes, mas você saberia explicar o conceito de variável? Variável é a forma que as linguagens de programação utilizam para representar dados. Uma variável nada mais é do que um rótulo, um nome atribuído a uma posição ou conjunto de posições na memória do computador contendo um item de dados. Cada variável possui um valor, que representa a informação que foi atribuída a ela. Compreendeu? Observe a seguinte analogia: Imagine uma posição na memória do computador como um pote. Agora, imagine que você precisa do conteúdo de um determinado pote. Mas, como são muitos potes, como você escolherá o certo? Neste exemplo, a variável “comprimidos” poderia ter como valor “aspirina”. Em shell script, o nome de uma variável começa sempre por uma letra ou por um sublinhado, e pode conter qualquer quantidade de letras, dígitos e/ou sublinhados. O conteúdo de uma variável é armazenado como uma string e não há limite para a quantidade de caracteres que ela pode conter. A atribuição de valores a uma variável é feita escrevendo-se o nome da variável seguido imediatamente do caractere = e o valor a ser atribuído, sem qualquer espaço entre eles. Para atribuir uma variável com valor que contenha espaços, o valor deverá ser colocado entre aspas. Veja alguns exemplos de atribuição de valores a variáveis: Para obter o valor de uma variável, utiliza-se o caractere $ precedendo seu nome. Por exemplo: Para limpar o valor de uma variável basta fazer uma atribuição nula. Por exemplo: Ao contrário de muitas linguagens de programação, o shell não separa suas variáveis por tipo (glossário). Em shell script, as variáveis são sequências de caracteres (strings), mas, dependendo do contexto, podem ser realizadas operações aritméticas sobre as variáveis. ARGUMENTOS Os argumentos são passados para o script a partir da linha de comando por intermédio das variáveis. Quando executamos um script como o exemplo a seguir, o servidor1, servidor2.com e 5 são três parâmetros passados ao script. Observe outro exemplo: Depois de 9, os argumentos devem ser colocados entre chaves. Por exemplo: PROTEÇÃO COM ASPAS Proteção com aspas (quoting) é a forma utilizada para informar ao shell como interpretar os dados passados. ESCAPE COM BARRA INVERTIDA Preceder um caractere com uma barra invertida (\) diz ao shell para tratar literalmente o caractere. ASPAS SIMPLES Aspas simples ('......') forçam o shell a tratar literalmente tudo o que estiver entre o par de aspas. Não é possível encaixar aspas simples dentro de uma string protegida por aspas simples, pois nem a barra invertida é especial dentro de aspas simples. ASPAS DUPLAS Aspas duplas ("......") agrupam o texto como uma única string, porém o shell processa caracteres de escape, variáveis, substituição de comandos etc. ESTRUTURA DE DECISÃO - IF O construtor if/then testa se a saída do comando anterior é 0 (em UNIX, 0 signi�ca sucesso) e, em caso a�rmativo, executa um ou mais comandos. Em versões mais recentes do shell, foi introduzido o comando [[ ... ]], que estendeu os comandos de teste realizando comparações de uma forma mais familiar para os programadores de outras linguagens. É comum esbarrar na sintaxe de um comando, o foco é o problema que se pretende resolver. Após de�nir a lógica é que testaremos a sintaxe. Vamos começar com um problema simples: Comparar duas variáveis “a” e “b”; Se “a” for maior, escrever a mensagem “a é maior que b”; Se “b” for maior, a mensagem é “b é maior que a”. Em pseudocódigo teríamos: Faltou veri�car se são iguais. Para isso, poderíamos combinar outro SE para esse teste. Num script em bash teríamos: Aproveite e teste este código criando o script aula2-1.sh. Vamos, analisar mais um script (os comentários vem depois de #): Em estruturas de decisão, comparamos valores simples ou compostos e podemos ter diversas soluções. No caso acima, são 3 possibilidades. Melhorando esse código, podemos resolver aquele problema de testar se a e b são iguais com “elif”. Continue testando... Mas esse script ainda não atende ao principal propósito de um script. Então, por que construir um para comparar 3 e 5? Usamos esse exemplo apenas para demonstrar o uso dos comandos. Scripts são construídos para soluções em qualquer caso. Ainda, nesse exemplo, poderíamos generalizar a solução usando argumentos passados ao script. Veja o próximo script: Para que este script funcione a chamada deveria ser: Onde 5 é o primeiro argumento ($1) e 3 é o segundo argumento ($2). Agora temos um script capaz de comparar dois valores quaisquer. Vamos lá, teste este script também. Se restaram dúvidas, repita ou use os fóruns para discutir o assunto. O construtor if/then pode testar a saída de qualquer comando, não se limitando apenas a testes entre colchetes. Na prática, a resposta da estrutura de decisão será sempre verdadeiro ou falso. De uma forma mais ampla, a estrutura do construtor if/then pode ser: OPERADORES DE TESTE EM ARQUIVOS Veja alguns operadores para teste em arquivos: Observe um exemplo da utilização do operador –f: ESTRUTURA DE DECISÃO COM CASE Se for preciso veri�car o valor de uma variável dentre muitos, pode ser utilizada uma série de encadeamento de testes if e elif. Porém, o shell possui a construção case que pode ser utilizada com muito mais facilidade para o casamento de padrões. Sua sintaxe é: Exemplo da utilização do case: ATIVIDADE Você já deve ter percebido que, ao longo de nossas aulas, algumas tarefas simples serão repetitivas. Uma delas é que a cada exemplo precisamos criar um novo script, alterar suas propriedades com “chmod 777 nome- script.sh” e inserir a linha “#!/bin/bash” no topo do script para iniciar o trabalho. Sua tarefa é criar um script novo.sh que realize as tarefas acima com uma chamada do tipo: Onde script.sh é o arquivo a ser criado. Resposta Correta 1. Uma variável em Shell Script: Deve ser ter seu tipo declarado, como “int a”. Não pode ser rede�nida ao longo do Script. Tem seu valor atribuído diretamente como em “x=5”. Tem seu valor atribuído como em “$x=5”. As variáveis sempre recebem $ na frente, seja na atribuição de valores seja nas operações com a variável. Justi�cativa 2. Ao chamar um script com o comando: As variáveis $0 e $ 2 serão: servidor1 e servidor script.sh e .com servidor1 e .com script.sh e servidor2.com servidor 1 e 5 Justi�cativa 3. O comando ./script.sh 4 5 enviado a script.sh cujo código está abaixo: Apresenta como resultado: b é maior que a a é maior que b b é menor que a a é menor que b erro pois $1 não foi de�nido Justi�cativa 4. No Script abaixo: Qual a mensagem de resposta caso a chamada fosse ./script.sh 20 20? a igual a b a maior que b a menor que b Nenhuma das condições b maior que a Justi�cativa 5. O script1.sh tem o conteúdo: O script2.sh tem o conteúdo: O comando ./script1.sh apresenta como resposta na tela: Preto e Branco Rubro-Negro Fluminense Tricolor Vasco CampeãoNenhuma resposta Justi�cativa Glossário TIPO Algumas linguagens separam suas variáveis por tipo, como double, int e �oat utilizados para guardar valores numerais.
Compartilhar