Atividade 1
4.b) folheto:
4.c) path
4.d) classifica
5) Ao executar o script traps, um arquivo criado, cujo formato arq.$$, ou seja, sua extenso ser
o PID (identificao do processo corrente).
Ao dig
itarmos no terminal simplesmente o comando kill <PID>, usamos o comando default, que
apenas remove o arquivo que identificamos e, em seg
uida, o prog
rama espera 5 seg
undos antes de
finalizar.
Por outro lado, se tivermos outro arg
umento, como o -2 ou o -15, estaremos enviando um sinal para
que sua respectiva trap no script seja acionada.
No caso do -2, temos o sinal SIGINT, que um sinal de interrupo. No script temos:
trap "echo 'Algum processo enviou um INT' 1>&2; rm -f $ARQUIVO; exit;" 2
Nesse caso, a mensag
em 'Algum processo enviou um INT' impressa, o arquivo removido e o
prog
rama finalizado.
J no caso do -15, temos o sinal SIGTERM, que um sinal de finalizao. No script temos:
trap "echo 'Algum processo enviou um TERM' 1>&2; rm -f $ARQUIVO; exit;" 15
Nesse caso, a mensag
em 'Algum processo enviou um TERM' impressa, o arquivo removido e o
prog
rama finalizado.
6) Quando executamos subspar sem arg
umentos, temos o seg
uinte resultado:
1:abacaxi:
2:laranja:
laranja
3::
subspar: 11: subspar: param4: QuartaVarNaoInicializada
Do arquivo subspar, temos:
test -n "$1" && param1=$1
test -n "$2" && param2=$2
test -n "$3" && param3=$3
test -n "$4" && param4=$4
O comando test n retorna verdadeiro se a string
no estiver vazia, log
o, como no existem
parmetros, param1, param2, param3 e param4 esto vazias, ento test retorna falso para todos os
casos.
echo "1:${param1-abacaxi}:"; echo $param1
Dessa forma, a verificao ${param1-abacaxi} retorna a sequncia default (abacaxi), pois param1
no foi setado e, por isso tambm (param1 ser vazio) temos uma quebra de linha.
echo "2:${param2=laranja}:"; echo $param2
A seg
unda verificao, ${param2=laranja} tambm retorna a sequncia default (laranja), pois
param2 no foi setado. Como param2 estava vazio, a seg
unda verificao faz com que ele assuma o
valor default, por isso impresso laranja na linha de baixo.
echo "3:${param3+melancia}:"; echo $param3
A terceira verificao, ${param3+melancia} nada retorna, pois param3 no foi setado, e por esse
motivo tambm temos um quebra de linha ao imprimi-lo.
echo "4:${param4?QuartaVarNaoInicializada}:"; echo $param4
A quarta verificao, ${param4?QuartaVarNaoInicializada} imprime a mensag
em default
O script acima cria o diretrio lixo se ele no existir. Tambm obedece aos seg
uintes comandos:
-l: mostra o contedo do lixo;
-r: se conter somente esse parmetro, ento esvazia o lixo;
se for enviado um arquivo, ele vai para a lixeira.
Esse script til para se trabalhar com a lixeira.
O script acima tem como objetivo imprimir a rvore de diretrios e arquivos, se no forem dados
parmetros, comea do diretrio corrente. Se a profundidade for dada, essa ser a altura da rvore.
Esse script bem til quando se quer ver os arquivos e diretrios de uma pasta.
9)
#!/bin/bash
N=1
M=0
#repeticoes default = 1
#atraso default = 0
for ARG in $*
do
case $ARG in
--repeticoes=*) N="${ARG##--repeticoes=}";;
--atraso=*) M="${ARG##--atraso=}";;
esac
done
sleep $M
#atraso de M segundos
done ;;
esac
shift
done
#fim do for
#fim do case
#shift para o proximo argumento
#fim do while
10) O prog
rama a seg
uir calcula o fatorial de um nmero fornecido na entrada:
#!/bin/bash
#funcao recursiva para calcular o fatorial de um numero
fatorial()
{
if [ $1 -le 1 ]
#se o numero for <= 1
then
echo 1
#retorna 1
else
echo $[ $1 * `fatorial $[$1-1]` ]
#senao retorna n*(n-1)!
fi
}
read n
#le da entrada
while [ $n != "fim" ]
#enquanto o usuario nao digitar "fim", faz o calculo do fatorial
do
if [ $n -lt 0 ]
#se o numero for negativo
then
echo 'numero invalido'
#imprime "numero invalido"
else
echo "$n! = `fatorial $n` "
#caso contrario, calcula o fatorial
fi
read n
#le a nova entrada
done
#fim do programa