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
Download

Trabalho de Shellscript