Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 05 2014.1 Sumário • Argumentos; • Expansão aritméAca: let, (( )) e $(( )); • Operadores matemáAcos; • Exercícios. 2 Exercício 1. Escrever um script que solicita ao usuário que entre com um nome e um telefone. Após a leitura dos dados (read), acrescenta-‐os ao final do arquivo agenda.txt. Caso o arquivo não exista, ele deve ser criado. Ao final, deve-‐se imprimir na tela (igual ao modelo abaixo) os dados de toda a agenda atualizada e em ordem alfabéAca (use os comandos sort e cat). Nome: Beatriz Telefone: 1111-4545 ------------------------- Agenda ------------------------- Almir 3434-3232 Beatriz 1111-4545 Zuleica 2121-2121 ------------------------- 3 Resposta – exercício 01 read -p -n{5} "Nome: " nome read -p "Telefone: " tel echo -e "$nome $tel" >> agenda.txt echo -e "\n-------------------------“ echo -e " Agenda“ echo -e "-------------------------“ sort agenda.txt | cat echo -e "-------------------------\n" 4 Exercício 2. Escrever um script que imprima na tela o número de telefones armazenados na agenda do exercício anterior (comando wc -l para contar). Seu script deverá processar o arquivo agenda.txt e gerar uma saída de acordo com o modelo abaixo: Agenda tem 3 telefones. 5 Resposta – exercício 02 echo -e "Agenda tem `wc -l < agenda.txt` telefones." 6 Exercício 3. Escrever um script que solicita ao usuário que digite o seu primeiro nome e em seguida exibe uma saudação de boa noite usando o nome do usuário e informando qual a data e hora atuais, como no exemplo abaixo (as ASPAS são obrigatórias e a data deve estar com letras MAIÚSCULAS): Olá Alexandre, boa noite! Data e hora atuais: "QUA, 13 DE FEV DE 2013 17:35:19". 7 Resposta – exercício 03 read -p "Nome: " nome echo "Olá $nome, boa noite!" echo "Data e hora atuais: \"`date | tr 'a-z' 'A-Z'`\"." 8 Argumentos • Argumentos são passados para os comandos ou scripts a parAr da linha de comando; • Exemplos de comandos e seus argumentos: cd $HOME mkdir bin mv nuser bin tr 'E' 'e' < entrada.txt > saida.txt 9 Argumentos • Argumentos são também chamados de parâmetros posicionais, pois são acessados com base na sua posição, através das variáveis especiais $0, $1, $2, $3, ... , etc; – Onde $0 é o nome do próprio script, $1 é o primeiro argumento, $2 o segundo argumento, e assim por diante; • Do décimo em diante, os números devem ser colocados entre chaves. Por exemplo, ${10}, ${11}, ${12}, ... 10 Argumentos • Exemplo de acesso aos argumentos do script: – Modificando a solução do exercício 01 da Aula 03 (agenda telefônica) para receber o nome e telefone por parâmetros: echo -e "$1 $2" >> agenda.txt echo -e "\n-------------------------" echo -e " Agenda" echo -e "-------------------------" sort agenda.txt | cat echo -e "-------------------------\n" 11 Expansão aritméAca • Veja o que ocorre se fizermos as seguintes atribuições: n=0 echo "n = $n" n=$n+200 echo "n = $n" 12 Expansão aritméAca • Veja o que ocorre se fizermos as seguintes atribuições: n=0 echo "n = $n" n=$n+200 echo "n = $n" 13 $ ./t.sh n = 0 n = 0+200 Expansão aritméAca • Para realizarmos operações matemáAcas com números INTEIROS em shell script, precisamos uAlizar uma das formas abaixo: – Comando let: let n=100+100 echo "n = $n" # let n=100+ 100 INVÁLIDO!! let "n = n + 200" # Com aspas, podemos usar espaços echo "n = $n" – Para manipulação de números reais, precisamos uAlizar uma outra linguagem específica para cálculo (bc). 14 Expansão aritméAca • Para realizarmos operações matemáAcas com números INTEIROS em shell script, precisamos uAlizar uma das formas abaixo: – Comando let: let n=100+100 echo "n = $n" # let n=100+ 100 INVÁLIDO!! let "n = n + 200" # Com aspas, podemos usar espaços echo "n = $n" – Para manipulação de números reais, precisamos uAlizar uma outra linguagem específica para cálculo (bc). 15 $ ./t.sh n = 200 n = 400 Expansão aritméAca – Operadores (( )) e $(( )): n=0 ((n=n+1)) echo "n = $n" ((n = n + 10)) echo "n = $n" n=$((n + 20)) echo "n = $n" # n=(( n + 10 )) INCORRETO!! # $(( n = n + 10 )) INCORRETO!! echo "n = $((n = n + 10))" # correto echo "n = ((n = n + 10))" # correto, mas... 16 Expansão aritméAca – Operadores (( )) e $(( )): n=0 ((n=n+1)) echo "n = $n" ((n = n + 10)) echo "n = $n" n=$((n + 20)) echo "n = $n" # n=(( n + 10 )) INCORRETO!! # $(( n = n + 10 )) INCORRETO!! echo "n = $((n = n + 10))" # correto echo "n = ((n = n + 10))" # correto, mas... 17 $ ./t.sh n = 1 n = 11 n = 31 n = 41 n = ((n = n + 10)) Expansão aritméAca • Resumindo: – Operador (( )): disponibiliza a avaliação de expressões aritméAcas; – Operador $(( )): difere do anterior, pois faz a subsAtuição de toda a expressão pelo seu valor final; 18 Operadores matemáAcos + -‐ soma; - -‐ subtração; * -‐ mulAplicação; / -‐ divisão; ** -‐ exponenciação; % -‐ módulo (resto da divisão inteira); += -‐ incremento por uma constante; -= -‐ decremento por uma constante; *= -‐ mulAplica por uma constante; /= -‐ divide por uma constante; %= -‐ módulo por uma constante; 19 Exercícios 1. Escrever um script para ler 3 valores, calcular e imprimir a soma desses valores; 2. Escrever um script para ler os valores (inteiros) do comprimento, da largurae da altura de uma caixa, calcular e imprimir o seu volume; 3. Escrever um script que receba por parâmetro dois valores e exibir na tela o resultado das seguintes operações entre eles: +, -, *, /, ** e %. Modelo: 2 + 3 = 5 2 - 3 = -1 2 * 3 = 6 ... 20 Exercícios 4. Escrever um script que receba por parâmetro 3 valores inteiros, representando a idade de uma pessoa em anos, meses e dias. Calcular e imprimir a idade desta pessoa em dias; 5. Escrever um script que receba por parâmetro o tempo de duração de um experimento expresso em segundos e imprima na tela esse mesmo tempo em horas, minutos e segundos. 21 Estudo dirigido • Leitura do capítulo 13 do livro: “Advanced Bash-‐ScripAng Guide” • Leitura do capítulo 6.1.2 e 6.1.3 do livro: “Classic Shell ScripAng” 22 Próxima aula... • Testes ou condicionais; • Operadores de comparação (relacionais); • Operadores booleanos. 23
Compartilhar