• Nenhum resultado encontrado

Conceitos Básicos de Scripts

N/A
N/A
Protected

Academic year: 2021

Share "Conceitos Básicos de Scripts"

Copied!
37
0
0

Texto

(1)

Programação de Scripts

Prof. Kleber Rezende

kleber.rezende@ifsuldeminas.edu.br

(2)

O que é o shell?

 O Shell pode ser definido como o interpretador

de instruções e comandos.

 Quando o usuário ou sistema executa qualquer

comando, o Shell é responsável pela correta 'interpretação' deste.

 O "prompt" do Shell é a linha de comando do

Unix e Linux, que recebe os comandos digitados pelo usuário para serem executados.

(3)

O que é o shell?

 Além dos comandos básicos para navegar entre

diretórios e manipular arquivos, ele também possui todas as estruturas de uma linguagem de programação, como IF, FOR, WHILE, variáveis e funções. Com isso, também é possível usar o shell para fazer scripts e automatizar tarefas.

(4)

Shell Script

 Um script é um arquivo que guarda vários

comandos e pode ser executado sempre que preciso. Os comandos de um script são os mesmos que se digita no prompt.

 Por exemplo, se de tempos em tempos você

quiser saber informações do sistema como

horário, ocupação do disco e os usuários que estão logados, é preciso digitar três comandos:

(5)

prompt# date prompt # df prompt # w

• É melhor fazer um script chamado "sistema" e colocar estes comandos nele. O conteúdo do arquivo "sistema" seria o seguinte:

#!/bin/bash date

(6)

E para chamar este script, basta agora executar apenas um comando:

prompt # ./sistema

Isso é um shell script. Um arquivo de texto que contém comandos do sistema e pode ser executado pelo usuário.

IMPORTANTE: Antes de executar um script, você deve torná-lo um arquivo executável

(7)

Melhorando o código do script

 Com o tempo, o script vai crescer, mais

comandos vão ser adicionados e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro.

 Para poupar horas de estresse, e facilitar as

manutenções futuras, é preciso deixar o código visualmente mais agradável e espaçado, e colocar comentários esclarecedores.

(8)

Melhorando o código do script

#!/bin/bash

# sistema - Script que mostra informações sobre o sistema # Autor: Fulano da Silva

# O date mostra a data e a hora correntes echo "Data e Horário:"

date echo

# O df mostra as partições e quanto cada uma ocupa no disco echo "Uso do disco:"

df echo

# O w mostra os usuários que estão conectados nesta máquina echo "Usuários conectados:"

(9)

Melhorando o código do script

 Para adicionar um comentário, basta iniciar a

linha com um "#" e escrever o texto do comentário em seguida.

 Estas linhas são ignoradas pelo shell durante a

execução.

 O cabeçalho com informações sobre o script e

seu autor também é importante para ter-se uma visão geral do que o script faz, sem precisar analisar todo o código.

(10)

Variáveis

 As variáveis são a base de qualquer script. É

dentro delas que os dados obtidos durante a execução do script serão armazenados.

 Para definir uma variável, basta usar o sinal de

igual "=" e para ver seu valor, usa-se o comando echo.

(11)

Variáveis

prompt$ VARIAVEL="um dois tres" prompt$ echo $VARIAVEL

um dois tres

prompt$ echo $VARIAVEL $VARIAVEL um dois tres um dois tres

(12)

Variáveis

 Não podem haver espaços ao redor do igual "="  Também é possível armazenar a saída de um

comando dentro de uma variável.

 Ao invés de aspas, o comando deve ser colocado

entre "$(...)";

 E finalmente, o comando "unset" apaga uma

(13)

Variáveis

prompt$ HOJE=$(date)

prompt$ echo "Hoje é: $HOJE"

Hoje é: Sáb Abr 24 18:40:00 BRT 2004 prompt$ unset HOJE

prompt$ echo $HOJE prompt$

(14)

Expressões aritméticas

 O shell também sabe fazer contas. A construção

usada para indicar uma expressão aritmética é "$((...))", com dois parênteses.

prompt$ echo $((2*3)) 6

prompt$ echo $((2*3-2/2+3)) 8

prompt$ NUM=44

prompt$ echo $((NUM*2)) 88

prompt$ NUM=$((NUM+1)) prompt$ echo $NUM

(15)

Expressões aritméticas

 Há também a opção do comando let, também

para número inteiros:

(16)

Expressões aritméticas

#!/bin/bash

echo “Entre com dois números:” read A read B let C=0 let C=A+B echo "Resultado:" echo $C

(17)

Expressões aritméticas

 Para calcular expressões com números reais,

devemos usar a sintaxe mostrada no exemplo abaixo:

 Onde “scale=2” significa duas casas após a vírgula.  O pipe bc “|bc” significa que estamos usando a

calculadora do sistema.

A="5.5" B="2.2"

(18)

Exercícios

1. Faça um script que leia nome, curso, disciplina e as três notas de um aluno. Na saída será exibido o nome e a média do aluno.

2. Faça um script que leia um valor em centímetros e mostre o mesmo valor em metros.

3. Faça um script que mostre a eficiência de um jogador em um treino de pênaltis. Para isso leia quantas tentativas e quantos acertos.

4. Faça um script que leia o nome, cargo e salário de um funcionário. Dê um aumento de 34.5% a este funcionário. Mostre o salário antigo, o atual e a diferença entre eles.

5. Faça um script que calcule o tempo gasto em uma viagem de carro. Para isso entre com a distância que será percorrida e a velocidade média em que o carro correrá.

6. Faça um script que calcule o consumo de combustível de um carro em uma viagem. Para isso entre com a autonomia do carro (km/litro) e a distância que será percorrida.

(19)

Recebimento de opções e parâmetros

 Assim como os comandos do sistema que

possuem opções e parâmetros, os scripts também podem ser preparados para receber dados via linha de comando.

 Dentro do script, algumas variáveis especiais são

definidas automaticamente, por exemplo: "$1" contém o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante.

(20)

Recebimento de opções e parâmetros

 O acesso é direto, basta referenciar a variável que

o valor já estará definido.

 Assim é possível criar scripts que tenham opções

como --help, --version e outras.

 Além disso, existem outras variáveis especiais:

Variável Especial Significado

$# Mostra a quantidade de parâmetros que foram passados para o script.

$* Lista todos os parâmetros passados para o script

$? Mostra se o último comando foi executado com sucesso ou não, sendo que retorna o valor 0 como sucesso e o valor 1 como erro.

(21)

Recebimento de opções e parâmetros

#!/bin/bash

# argumentos - mostra o valor das variáveis especiais

echo "O nome deste script é: $0" echo "Recebidos $# argumentos: $*"

echo "O primeiro argumento recebido foi: $1" echo "O segundo argumento recebido foi: $2"

(22)

Recebimento de opções e parâmetros

prompt$ ./argumentos um dois três O nome deste script é: ./argumentos Recebidos 3 argumentos: um dois três O primeiro argumento recebido foi: um O segundo argumento recebido foi: dois

(23)

O comando test

 O canivete suíço dos comandos do shell é o

"test", que consegue fazer vários tipos de testes em números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito, algumas delas:

(24)
(25)

O comando test

prompt$ ./testa-arquivos Digite o arquivo: /naoexiste

O arquivo '/naoexiste' não foi encontrado

prompt$ ./testa-arquivos Digite o arquivo: /tmp /tmp é um diretório

prompt$ ./testa-arquivos

Digite o arquivo: /etc/passwd

 Tente fazer o script "testa-arquivos", que pede ao

usuário para digitar um arquivo e testa se este arquivo existe. Se sim, diz se é um arquivo ou um diretório. Exemplo de uso:

(26)

O comando test

prompt$ ./relacao.sh 3 5 3 é menor que 5 prompt$ ./relacao.sh 5 3 5 é maior que 3 prompt$ ./relacao.sh 5 5 5 é igual a 5 prompt$

 Faça um script que receba dois números como

parâmetro e mostre a relação entre eles. Exemplo:

(27)

O comando test

#!/bin/bash

echo "entre com 2 números reais" read n1

read n2

r=$(echo "$n1 >= $n2" | bc)

echo $r

test "$r" -eq "0" && echo "$n1 < que $n2" test "$r" -ne "0" && echo "$n1 >= que $n2"

 Para fazer comparações com números reais o

comando test não é recomendado.

(28)

A Estrutura Condicional if

 Diferente de outras linguagens, o if testa um

comando e não uma condição.

 Porém como já conhecemos qual o comando do

shell que testa condições, é só usá-lo em conjunto com o if.

 Por exemplo, para saber se uma variável é maior

ou menor do que 10 e mostrar uma mensagem informativa na tela, pode-se fazer assim:

(29)

A Estrutura Condicional if

if test "$VARIAVEL" -gt 10 then

echo "é maior que 10" else

echo "é menor que 10" fi

(30)

A Estrutura Condicional if

if [ "$VARIAVEL" -gt 10 ] then

echo "é maior que 10" else

echo "é menor que 10" fi

 Há um atalho para o test , que é o comando [.

Ambos são exatamente o mesmo comando, porém usar o [ deixa o if mais parecido com o formato tradicional de outras linguagens:

 Obs.: Se usar o [, também é preciso fechá-lo com o ], e sempre

(31)

A Estrutura Condicional if

if expressão1 && expressão2 then

comandos else

comandos fi

 Você pode utilizar os operadores lógicos && (E) e

|| (OU) para montar suas expressões lógicas.

if expressão1 || expressão2 then

comandos else

(32)

A Estrutura Condicional if

if [ “$1” –gt 10 ] && [ “$1” –lt 70 ] then

echo “Dentro do intervalo [10..70]” else

echo “Fora do intervalo [10..70]” fi

(33)

A Estrutura Condicional if

if expressão1 then comandos else if expressão2 then comandos fi

 Você pode ainda utilizar estruturas if aninhadas,

lembrando que para cada if deve existir um fi, indicando o fim da estrutura.

if expressão1 then

comandos

elif expressão2 then

(34)

A Estrutura Condicional if

if [ “$1” –ge 6 ] then echo “APROVADO” else if [ “$1” –ge 3 ] then echo “RECUPERAÇÃO” else echo “REPROVADO” fi fi  Exemplo:

(35)

Comando Case

case "$variavel" in

texto1) comandos que serão executados;; texto2) comandos que serão executados;; texto3) comandos que serão executados;; esac

 O comando CASE executa uma ação caso o

conteúdo de uma variável seja igual a um determinado valor exato.

 Ele é usado da seguinte forma:

 Repare que após as listas de comandos a serem executados existem sempre ";;".

(36)

Comando Case

echo "Digite Oi, Tchau, Amor ou Odiar"

read texto

case "$texto" in Oi)

echo "Oi! Tudo bom?" ;;

Tchau)

echo "Tchau. Até Mais!" ;;

Amor) echo "Eu amo você";;

Odiar) echo "Eu não odeio você";;

*) echo "Você não digitou nenhuma das opções";;

esac

(37)

Comando Case

if [ "$texto" = "Oi" ] then

echo "Oi! Tudo bom?"

elif [ "$texto" = "Tchau" ] then

echo "Tchau. Até Mais!" elif [ "$texto" = "Amor" ] then

echo "Eu amo você"

elif [ "$texto" = "Odiar" ] then

echo "Eu não odeio você" else

Referências

Documentos relacionados

Durante a construção deste trabalho, devido a algumas adversidades, não foi possível aprofundar outros assuntos que seriam ainda pertinentes, porém, mesmo que de modo informal,

Diante da complexidade e amplitude do problema associado ao Aedes aegypti em todo o Brasil (MARCONDES &amp; XIMENES, 2016), somado ao desconhecimento da influência

Para testar a hip´ otese de que os servidores p´ ublicos n˜ ao s˜ ao tratados como um grupo homogˆ eneo na determina¸c˜ ao das pol´ıticas salariais pelos governos

A Presidente da Na’amat Rio foi convidada para falar um pouco a respeito sobre a Organização Na’amat Pioneiras e sobre as creches da Na’amat em Israel. O Rabino

A coordenação das atividades de extensão a serem desenvolvidas pelos alunos será realizada por docente da Fundação Santo André – Coordenação de Inglês, com as

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Incidirei, em particular, sobre a noção de cuidado, estruturando o texto em duas partes: a primeira será uma breve explicitação da noção de cuidado em Martin Heidegger (o cuidado

Página 3 de 5 -Os dois principais argumentos a favor desta forma de preservação do ambiente mesmo para os defensores de uma ética antropocêntrica são: “O argumento