0% acharam este documento útil (0 voto)
117 visualizações9 páginas

RoteiroAtividades 7 03072012

O documento apresenta 12 atividades para o desenvolvimento de scripts shell utilizando estruturas de decisão, expressões regulares e controle de fluxo. As atividades abordam verificação de parâmetros, manipulação de arquivos, busca de informações e implementação de menus interativos.

Enviado por

Joe Radix
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
117 visualizações9 páginas

RoteiroAtividades 7 03072012

O documento apresenta 12 atividades para o desenvolvimento de scripts shell utilizando estruturas de decisão, expressões regulares e controle de fluxo. As atividades abordam verificação de parâmetros, manipulação de arquivos, busca de informações e implementação de menus interativos.

Enviado por

Joe Radix
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 9

Roteiro de Atividades 7

Shell Script
 Estruturas de decisão
Tópicos e conceitos
 Expressões regulares

 Controlar de fluxo de execução sequencial num script com o


Competências técnicas uso de estruturas de decisão
desenvolvidas  Aprender a criar máscaras ou padrões de pesquisas na busca
por informações através de expressões regulares

Outras competências  Utilização das potencialidades do sistema operacional Linux


desenvolvidas para a solução de problemas práticos.

Tempo previsto
 150-180 minutos
para as atividades

Atividade 1 – Verificando a existência de arquivos


Crie um script que recebe como parâmetro um nome de arquivo e verifica se este arquivo existe.

Resposta:

#!/bin/bash
if [ -e $1 ]
then
echo " O arquivo $1 existe"
else
echo "Arquivo inexistente"
fi

Atividade 2 – Verificando a entrada de parâmetros


Modifique o script da Atividade 1 de forma que ele teste se realmente recebeu um parâmetro.

Resposta:

#!/bin/bash
if [ $# -ne 1 ]
then

1 Introdução ao Linux – Shell


echo "Script que verifica se um arquivo existe"
echo "Uso: $0 arquivo"
exit
else
if [ -e $1 ]
then
echo " O arquivo $1 existe"
else
echo "Arquivo inexistente"
fi
fi

Atividade 3 – Executando sequências de comandos


Estenda o script da Atividade 2 para escrever o tamanho do arquivo, caso ele exista.

Dica: utilize o comando ls -lh, que traz a informação do arquivo, combinado com o comando cut, para
trazer somente o campo do tamanho do arquivo.

Resposta:

#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script que verifica se um arquivo existe"
echo "Uso: $0 arquivo"
exit
else
if [ -e $1 ]
then
echo " Tamanho do arquivo $1: `ls -lh $1 | cut -d " " -f 5`"
else
echo "Arquivo inexistente"
fi
fi

Atividade 4 – Combinando parâmetros, leitura e execução de


comandos.
Crie um script que auxilia a criação de arquivos. Ele deve receber como parâmetro um nome e
criar o arquivo no diretório corrente, com a permissão de escrita. Em seguida deve perguntar ao
usuário se ele quer editar o arquivo ou não. Se sim, abrir um arquivo em um editor. Verifique se
o usuário passou o número correto de parâmetros (1) e se o arquivo que ele pediu para criar já
existe.

2 Introdução ao Linux – Shell


Resposta:

#! /bin/bash
if [ $# = 1 ]
then
if [ -f $1 ]
then
echo "este arquivo já existe!"
else
touch $1
chmod +rwx $1
echo " O arquivo $1 foi criado"
echo -n "Deseja edita-lo agora (s/n)? "
read opcao
if [ $opcao = "s" ]
then
vi $1
fi
fi
else
echo "Uso do script: $0 nome_arquivo"
fi

Atividade 5 – Utilizando comando grep/egrep


Crie um script que solicita a informação de um nome de usuário e verifica se o nome informado
é de um usuário válido no sistema (desconsiderando as diferenças entre maiúsculas e
minúsculas).

Resposta:

#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script que verifica se um usuário é válido no sistema."
echo "Uso: $0 nome_usuário"
echo "Você deve passar o nome de um usuário"
exit
else
grep ^$1: /etc/passwd >/dev/null
if [ $? -eq 0 ]
then
echo "O usuário $1 é válido"
else
echo "O usuário $1 não é válido"
fi
fi

3 Introdução ao Linux – Shell


Atividade 6 – Ainda usando grep/egrep
Crie um arquivo chamado agenda contendo nomes e telefones, no formato: nome sobrenome
telefone. Crie um script que recebe como parâmetro um nome e imprima as linhas do arquivo
agenda que o contenham. Verifique se realmente foi passado um parâmetro.

Resposta:

#!/bin/bash
if [ $# -ne 1 ]
then
echo "recupera nome e telefone a partir do arquivo agenda"
echo "O nome deve ser passado por parâmetro"
echo "Uso: $0 nome"
exit 1
else
grep $1 agenda > /dev/null
if [ $? -eq 0 ]
then
echo "recuperando informações"
grep $1 agenda
fi
fi

Atividade 7 – Combinando comandos


Crie um script que armazena em uma variável a quantidade de arquivos do diretório corrente e
em seguida escreve o valor dessa variável.

Dica: utilize os comando pwd para ver diretório corrente, ls para lista-lo e wc para contar.

Resposta:

#!/bin/bash

dir=`pwd`

quant=`ls $dir | wc -l`

if [ $quant -gt 0 ]

then

echo "O diretório corrente ($dir) tem $quant arquivos"

else

echo "Não há arquivos no diretório corrente ($dir)"

fi

4 Introdução ao Linux – Shell


Atividade 8 – Aninhando condicionais
Crie um script que recebe três números como parâmetros e exiba o maior deles. Verifique se
realmente foram passados três parâmetros.

Resposta:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Script que verifica qual é o maior entre 3 números"
echo "Entre com os números nos parâmetros"
echo "Uso: $0 numero1 numero2 numero3"
exit 1
else
if [ $1 -ge $2 ] && [ $1 -ge $3 ]
then
maior=$1
elif [ $2 -ge $1 ] && [ $2 -ge $3 ]
then
maior=$2
else
maior=$3
fi
echo "O número $maior é o maior deles"
fi

Atividade 9 – Utilizando expressões regulares


Crie um script que recebe duas palavras como parâmetro e verifica se a primeira está contida na
segunda.

Resposta:

#!/bin/bash
if [ $# -ne 2 ]
then
echo "Script que verifica se o primeiro argumento é substring do segundo"
echo "Uso: $0 substring palavra"
exit
else
if [[ "$2" =~ "$1" ]]
then
echo "$1 é substring de $2"
else
echo "não há relação"
fi
fi

5 Introdução ao Linux – Shell


Atividade 10 – Ainda utilizando expressões regulares

Crie um script que recebe o nome de um arquivo texto como parâmetro, verifica se o usuário
possui permissão de leitura deste arquivo e, caso tenha, exiba as seguintes informações sobre o
arquivo: número de caracteres, número de palavras e número de linhas do arquivo (Dica: utilize
o comando wc)

Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script conta informações de um arquivo texto"
echo "Uso: $0 arquivo"
exit
else
if [ -r $1 ]
then
if [[ `file $1` =~ "ASCII text"$ ]]
then
carac=`wc -c $1 | cut -d " " -f 1`
pal=`wc -w $1 | cut -d " " -f 1`
lin=`wc -l $1 | cut -d " " -f 1`
echo "O arquivo $1 possui $carac caracteres, $pal palavras e $lin linhas"
else
echo "O arquivo deve ser do tipo texto"
fi
else
echo "O arquivo não tem permissão de leitura ou não existe"
fi
fi

Atividade 11 – Utilizando case


Crie um script que retorna o dia da semana por extenso, a partir do comando date.

Ex: hoje é segunda-feira

Resposta:

#!/bin/bash
mes=`date +"%m"`
diasem=`date +"%w"`
case $diasem in
1) dia="segunda"
;;
2) dia="terça"
;;
3) dia="quarta"
;;
4) dia="quinta"

6 Introdução ao Linux – Shell


;;
5) dia="sexta"
;;
6) dia="sabado"
;;
7) dia="domingo"
;;
esac
echo "Hoje é $dia"

Atividade 12 – Utilizando case com menu de opções

Crie um script que apresenta ao usuário um menu com as seguintes opções:


1 - Exibir status da utilização das partições do sistema; (df -h)
2 - Exibir relação de usuário logados; (who)
3 - Exibir data/hora; (date)
4 - Sair.
E partir daí, receba a opção digitada pelo usuário e execute o comando respectivo. Informe ao
usuário caso ele esteja digitando opção fora daquelas esperadas.

Resposta:

#!/bin/bash
echo "1 - Exibir status da utilização das partições do sistema"
echo "2 - Exibir relação de usuário logados"
echo "3 - Exibir data/hora"
echo "4 - Sair"
echo "Informe sua opção: "
read opcao
case $opcao in
1) echo "As partições do sistema estão sendo usadas desta forma"
df -h
;;
2) echo "Usuários Logados"
who
;;
3) echo "Data e hora atuais"
date
;;
4) echo "Saindo do sistema"
;;
*) echo "Você deve digitar as opções de 1 a 4"
Esac

7 Introdução ao Linux – Shell


Atividade 13 – Combinando if com case
Crie um script que realiza as operações aritméticas básicas (soma, subtração, divisão e
multiplicação), recebendo a operação e os operandos como parâmetros. Verifique se os
operandos são numéricos, com sinal ou sem sinal.

Dica: use o padrão de comparação das expressões regulares para verificar se o parâmetro
contém somente números: [ "$2" =~ ^[+-]?[0-9]*$ ]

Resposta:

#!/bin/bash
if [ $# -ne 3 ]
then
echo "Calculadora simples"
echo "Uso: $0 operação (som,sub,mul,div) operando1 operando2"
exit
else
if [[ "$2" =~ ^[+-]?[0-9]*$ && "$3" =~ ^[+-]?[0-9]*$ ]]
then
case $1 in
som) ((op=$2+$3))
echo "A soma dos dois numéros é: $op"
;;
sub) ((op=$2-$3))
echo "A subtração dos dois numéros é: $op"
;;
mul) ((op=$2*$3))
echo "A multiplicação dos dois numéros é: $op"
;;
div) ((op=$2/$3))
echo "A divisão dos dois numéros é: $op"
;;
*) echo "Você deve digitar uma das operações matemáticas (som, sub, mul, div)"
esac
else
echo "numero inválido"
fi
fi

Atividade 14 – Combinando if, case e comandos

Crie um script que recebe o nome de um arquivo como parâmetro e que, caso este arquivo não
exista, escreva a lista de arquivos de /home neste arquivo. Se o arquivo existir, exibe uma

8 Introdução ao Linux – Shell


mensagem dizendo o arquivo já existe; em seguida dar a opção de apagar o arquivo anterior,
substituindo seu conteúdo, ou a opção de adicionar no final do arquivo a nova informação.

Resposta:

#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script escreve o conteúdo de /home no arquivo"
echo "O arquivo deve ser passado por parâmetro"
echo "Uso: $0 arq"
exit 1
else
if [ -f $1 ]
then
if [ ! -w $1 ]
then
echo " O arquivo $1 já existe e não tem permissão de escrita"
else
echo " O arquivo $1 já existe. O que deseja fazer?"
echo "1 - substituir seu conteúdo por este"
echo "2 - adicionar no final do arquivo"
echo "3 - sair"
read opcao
case $opcao in
1) echo "substituindo conteúdo pelo /home"
ls /home > $1
;;
2) echo "adicionado no final do arquivo $1 conteúdo de /home"
ls /home >> $1
;;
3) echo "deixando o script"
exit
esac
fi
else
echo " criando o arquivo $1 com o conteúdo de /home"
ls /home > $1
fi
fi

9 Introdução ao Linux – Shell

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy