Você está na página 1de 5

Exercícios de Introdução a Programação em Bash Shell Página 1 de 5

Page 1

Exercícios de Introdução a Programação em Bash Shell

Referências . Pagina www.di.ubi.pt/~operativos Unix Documents

• A quick guide to writing scripts using the bash shell


• Advanced Bash Scripting Guide : the Linux Documentation Project

1. Variáveis

Faça um bash shell script chamado vars para experimentar com variáveis

#!/bin/bash

# variaveis de ambiente

echo $PATH
echo $USER $HOME
# pode-se ver todas as variáveis do ambiente com o comando env | less

#variaveis locais

ola="bom dia"
echo "$ola Paulo"
echo "$olaPaulo" $Texto Pegado a variavel ..
echo "${ola}Paulo" #proteger a variável com as chavetas
mesg="$ola $USER"
echo $mesg

# input

echo "Introduza qualquer Coisa" ; read var


echo "Introduziu $var"

# execução

http://www.ic.unicamp.br/~celio/mc514/docs/bash_pt.html 18/05/2011
Exercícios de Introdução a Programação em Bash Shell Página 2 de 5

data=`date`
echo $data
info=`echo $HOME ; echo " estamos em "; pwd`
echo $info

# contas
x=1
let x=x*2+3
echo "x=$x"
let x--
echo "x=$x"

#variaveis especiais

echo "Numero de Arguments para este script $#"


echo "Todos os argumentos para este script $*"
echo "O primeiro $1 e segundo $2 argumentos"
echo "O nome deste ficheiro $0"
echo "O Processo ID deste script $$"
echo "Exit status do comando anterior $"”

Page 2

2. mywho

(a) Faça um bash shell script chamado mywho que aceita um string como parâmetro. O script deverá indicar se
existe um utilizador actual do sistema cujo username contêm o string. Se for o caso o script deverá executar o
comando finger filtrando o output pelo valor do string.

Modifique o script em baixo :

#!/bin/bash
# mywho versão inicial

echo "Introduza Nome (userid) da Pessoa " ; read nome

echo "Procurando "$nome


# comando who seguido por um filtro.
who | grep $nome

# Nota : exit status of previous comand is stored in is $?


# Default is valor 0 indicates sucess.

http://www.ic.unicamp.br/~celio/mc514/docs/bash_pt.html 18/05/2011
Exercícios de Introdução a Programação em Bash Shell Página 3 de 5

if [ $? -eq 0 ] ; then
echo "$nome Foi Encontrado "
else
echo "$nome Não Foi Encontrado "
fi
echo

solução : Em vez de ler o “nome” com o comando read utilizar-se-á a variável $1.

2 (b) Generalizar o script para aceitar N parâmetros

utilizar a estrutura for variavel in $x do .. done

Antes de generalizar Experimente o seguinte Script teste

#!/bin/bash
# script teste

for x in $*
do
echo "Argumento $x"
done

[crocker@penhas p2]$ teste 12 in ola


Argumento 12
Argumento in
Argumento ola

Experimente em utilizar y="ola bom dia" e depois um ciclo pelo y .. for x in $y

Page 3

3 Testes de Decisão (if/case)

http://www.ic.unicamp.br/~celio/mc514/docs/bash_pt.html 18/05/2011
Exercícios de Introdução a Programação em Bash Shell Página 4 de 5

3 Testes de Decisão (if/case)


Faça um bash shell script que apresente ao utilizador um menu onde o utilizador pode escolher entre duas opções.

A primeira opção deverá mostrar o calendário do mês actual e a segunda a data actual

Utilizar: a estrutura if.. then..else..fi

3 (b) Adicione mais três opções, “calendário do ano actual”, “o numero de segundos desde 1970” e a “o
calendário do ano 1752”

Para a estrutura da decisão utilize a instrução case.


Se o utilizador escolher uma opção invalida deverá aparecer a mensagem “opção invalida”

Dicas:
ver o sintaxe da instrução case no Advanced Bash Scripting Guide : the Linux Documentation Project
ver as ajudas dos comandos cal e date.

3 (c) ( difícil ) Mais uma opção . A data em português !!

4 Atribuição por execução e Ciclos

Faça um bash shell script, fichas, que faça uma listagem dos ficheiros no directório actual na seguinte forma

[crocker@penhas p2]$ fichas


Ficheiro 1 ex1.c
Ficheiro 2 fichas
Ficheiro 3 g1.c
Ficheiro 4 tmp
Ficheiro 5 stack.c

Utilizar uma variável para guardar os nomes dos ficheiro


f=`ls` ... Seguido por um ciclo for variavel in $f do .. done

5 while

Faça um bash shell script, enquanto, que faça uma contagem a partir do valor do seu primeiro argumento até o
valor do segundo

#!/bin/bash
# script not-quite-enquanto
cnt=1
while [ $cnt –le 10 ]
do
echo "cnt $cnt"
let cnt++
done

[crocker@penhas p2]$ contar 5 2


cnt 5
cnt 4

http://www.ic.unicamp.br/~celio/mc514/docs/bash_pt.html 18/05/2011
Exercícios de Introdução a Programação em Bash Shell Página 5 de 5

cnt 4
cnt 3
cnt 2

Page 4

6. wcnovo
Faça um bash shell script, wcnovo, que mostre apenas o numero de palavras e linhas de cada ficheiro do directório

actual.

6 (b) Altere o script para que no fim apresentará o numero total de palavras e linhas de todos os ficheiros do
directório.

7 until/shift

Faça um bash shell script, imprimir, que imprime todos os parâmetros do script na seguinte forma

[crocker@penhas p2]$ imprimir 12 in ola


usage ./imprimir argumentos

Argumento Numero 1 = 12
Argumento Numero 2 = in
Argumento Numero 3 = ola

Utilizar a estrutura, until [ -z $1 ] do ... shift .. done para fazer um ciclo pelas variáveis.

Nota: Os scripts devem ser acessíveis a partir de qualquer directório do seu login shell. Por isso coloca os seus
scripts no directório ~/bin e altere o seu path se for necessário.

Check List
Path. Está incluido o directório actual o simbolo “.” No seu PATH ? E o directório $HOME/bin ?
Ficheiro .bash_profile. Existe ? export path ? Está a ler o ficheiro .bashrc e .alias ?
Ficheiro .alias. Existe ? Tem os seus aliases ?

http://www.ic.unicamp.br/~celio/mc514/docs/bash_pt.html 18/05/2011

Você também pode gostar