FACULDADE DE TECNOLOGIA SENAC PELOTAS Trabalho de Shellscript Atividade 5 – Introdução a Informática Luis Gustavo Spern Barreto Análise e Desenvolvimento de Sistemas, 2013 Trabalho de Shellscript – ADS 2013 SENAC, Introdução a Informática 2 Sumário 1. Introdução.........................................................................................................................................3 2. Conceitos.......................................................................................................................................... 3 2.1. Variáveis................................................................................................................................... 3 2.2. Expressões aritméticas..............................................................................................................3 2.3. Execução...................................................................................................................................3 3. Cenários propostos........................................................................................................................... 4 3.1. Primeiro cenário........................................................................................................................4 3.2. Segundo cenário........................................................................................................................4 3.3. Terceiro cenário........................................................................................................................ 5 4. Problemas encontrados..................................................................................................................... 5 5. Conclusão......................................................................................................................................... 6 6. Referências....................................................................................................................................... 6 Trabalho de Shellscript Luis Gustavo Spern Barreto Faculdade de Tecnologia Senac Pelotas (SENAC) Caixa Postal 15.064 – 91.501-970 – Pelotas – RS – Brazil [email protected] Abstract. This meta-paper describes a few scenarios of the use of Shellscript as programming language in Unix-like environment systems. All work is developed using the Bourne-Again shell. Resumo. Este artigo descreve alguns cenários de uso do Shellscript como linguagem de programação em ambientes do tipo Unix. Todo o trabalho foi desenvolvido usando o Bourne-Again shell. 1. Introdução O Shell surgiu nas décadas de 60 e 70 no sistema operacional UNIX com a intenção de possibilitar ao usuário interagir com o sistema operacional através de comandos. Também é possível executar uma série de comandos salvos em um arquivo de texto denominado Shellscript. Atualmente diversos sistemas operacionais oriundos da plataforma UNIX que podem executar um Shellscript: Linux, FreeBSD, Mac OS X, entre outros. 2. Conceitos Um Shellscript é um arquivo de texto plano que contem um roteiro de comandos que são executados pelo interpretador Shell linha por linha de forma sequêncial. Na Figura 1 é possível ver um exemplo clássico de Hello World em Shellscript. Alguns comandos de um Shellscript são localizados nos caminhos definidos pela variável de ambiente PATH, entretando alguns comandos como if, for, while e switch são internos do interpretador Shell. 2.1. Variáveis Diferentemente de outras linguagens, como Java, variáveis em Shellscript não possuem tipo. Essencialmente as variáveis são tratadas como strings, mas dependendo do contexto o Shell permite operações com inteiros. 2.2. Expressões aritméticas Para resolver expressões aritméticas o Shell dispõe da construção interna $(( )) que suporta somente números inteiros, mas existem soluções externas como bc ou expr que suportam números decimais. Trabalho de Shellscript – ADS 2013 SENAC, Introdução a Informática 4 2.3. Execução A execução de um Shellscript é possível através da atribuição do modo executável a um arquivo (chmod +x) desde que a primeira linha especifique o interpretador Shell, que pode ser o padrão do sistema (/bin/sh) ou um interpretador Shell específico, como o Bourne-Again Shell (/bin/bash). 3. Cenários propostos Os cenários propostos utilizam problemas de lógica da unidade curricular de Algoritmos e Lógica de Programação ministrada pelo professor Edécio. Os dois primeiros cenários apresentam soluções simples, sem interface gráfica, somente textos. Já a terceira solução utiliza o componente dialog que dispõe de janelas, caixas de entrada de texto, formulário e botões. 3.1. Primeiro cenário Foi desenvolvido um Shellscript (Figura 2) para o seguinte exercício de lógica: Elaborar um programa que leia descrição, quantidade e preço de um produto. Informe o valor total da conta. #!/bin/bash # Autor: Luis Gustavo Spern Barreto - ADS 2013 - Introdução a Informática # Professor: André Moraes # # Primeiro cenário: # Elaborar um programa que leia descrição, quantidade e preço de um produto. # Informe o valor total da conta. echo read echo read echo read -n "Produto: " produto -n "Quantidade: " quantidade -n "Valor: " valor # Efetua o cálculo do valor total total=$(bc <<< "scale=2; $valor * $quantidade") echo "Total: $total" Figura 2 – Código fonte do primeiro cenário 3.2. Segundo cenário Foi desenvolvido um Shellscript (Figura 3) para o seguinte exercício de lógica: Elaborar um programa que leia nome e ano de nascimento de um aluno. Informe a sua idade e se ele é maior ou menor de idade. Trabalho de Shellscript – ADS 2013 SENAC, Introdução a Informática 5 #!/bin/bash # Autor: Luis Gustavo Spern Barreto - ADS 2013 - Introdução a Informática # Professor: André Moraes # # Segundo cenário: # Elaborar um programa que leia nome e ano de nascimento de um aluno. # Informe a sua idade e se ele é maior ou menor de idade. echo read echo read -n "Nome: " nome -n "Ano de nascimento: " nascimento idade=$((2013 - $nascimento)) echo "Idade: $idade" # Verifica se é maior ou menor de idade if [ $idade -ge 18 ]; then echo "$nome, você é MAIOR de idade" else echo "$nome, você é MENOR de idade" fi Figura 3 – Código fonte do segundo cenário 3.3. Terceiro cenário Esse cenário demonstra a implementação de programa de bate-papo entre multiplos usuários usando Shellscript e dialog. Para a funcionamento do programa é necessário que os usuários conectem a um servidor SSH e executem o Shellscript da Figura 4. #!/bin/sh # Autor: Luis Gustavo Spern Barreto - ADS 2013 - Introdução a Informática # Professor: André Moraes # # Terceiro cenário: # Bate-papo em Shellscript # Pergunta o nickname do usuário nick=$(dialog --stdout --inputbox "Nick:" 8 40) # Envia a mensagem de entrada echo "** $nick entrou no chat" >> out while true; do # Desenha tela do chat msg=$(dialog --stdout --backtitle "Bate-papo ADS 2013 (Ctrl-c para sair)" \ --tailboxbg out 10 60 –and-widget \ --clear --begin 2 2 --inputbox "Mensagem:" 8 145) echo "$nick: $msg" >> out done Figura 4 – Código fonte do terceiro cenário 4. Problemas encontrados A única dificuldade no desenvolvimento da atividade foi no uso de expressões aritméticas no Shell, que na construção interna do Shell não suporta números decimais, somente números inteiros. A solução do problema se deu com o uso da ferramenta bc. Trabalho de Shellscript – ADS 2013 SENAC, Introdução a Informática 6 5. Conclusão O Shellscript é uma linguagem de programação muito versátil, que permite utilizar comandos externos do sistema para automatizar tarefas rotineiras em sistemas do tipo UNIX, embora possa ser utilizado para outras aplicações. 6. Referências Shell Scripting Primer: Paint by Numbers. Disponível em <https://developer.apple.com/library/mac/#documentation/opensource/conceptual/sh ellscripting/PaintbyNumbers/PaintbyNumbers.html>. Acesso em 2 de maio 2013 Math in Shell Script – Introduction to Unix Study Guide. Disponível em <http://www.sal.ksu.edu/faculty/tim/unix_sg/bash/math.html>. Acesso em 2 de maio 2013 Trabalho de Shellscript – ADS 2013 SENAC, Introdução a Informática 7