rlcostapt
(usa CentOS)
Enviado em 04/01/2014 - 23:36h
Boas pessoal.
Tenho como trabalho de Sistemas Operativos Open-source fazer uma pequena base de dados em shell script.
Eu já escrevi o script quase todo mas deparei-me com uns problemas que não consigo resolver.
Já tentei pesquisar mas como são problemas muito especificos não acho nenhuma solução.
Eu apresento um menu e o utilizador pode escolher entre adicionar remover modificar pesquisar ou ver todos os registros de uma base de dados que nada mais é que um arquivo de texto com campos separados por um "Tab".
Mas o problema está quando o utilizador adiciona um registro com o campo nome composto por mais de duas palavras o arquivo não fica tdos os campos direitinhos nas suas colunas.
Deixo aqui o script. Se alguem me poder ajudar agradeço.
#!/bin/bash
clear
touch -c datafile
adicionar ()
{
read -p "Entre com o nome: " nome
read -n 8 -p "Entre com o seu NIF: " nif; echo ""
read -p "Entre com a morada: " morada
read -n 4 -p "Entre com o código postal: " codp; read -n 3 -p "-" comp; echo ""
read -n 9 -p "Entre com o telefone: " telefone; echo ""
echo "Foi adicionado o seu registro á base de dados."
echo "$nome $nif $morada $codp-$comp $telefone" >> datafile
sort -o datafile datafile
}
visualizar ()
{
echo "
Nome NIF Morada Codigo-Postal Telefone
"
cat ./datafile
echo " "
}
apagar()
{
read -p "Qual o nome que deseja apagar: " apag
grep -i "$apag" datafile | wc -l > $num
case $num in
0) echo "Não existe esse nome na base de dados."
;;
1)
grep -i "$apag" datafile
read -p "É este o registro que deseja apagar? (S/N): " resp
case $resp in
S) grep -v "$apag" datafile > ./datafile.rec
mv ./datafile.rec datafile
;;
s) grep -v "$apag" datafile > ./datafile.rec
mv ./datafile.rec datafile
;;
n) exit
;;
N) exit
;;
*) echo "Opção inválida!"
exit
;;
esac
*) echo "Existem mais do que um registro com esse nome. Restrinja a sua pesquisa."
exit
;;
esac
}
pesquisar()
{
read -p "Qual o nome que deseja pesquisar: " pesq
grep -i "$pesq" datafile
}
echo "
Escolha uma das opções?
Opção Descrição
##### #########
1) Adicionar Registro
2) Apagar Registro
3) Modificar Registro
4) Pesquisar por nome ou nif
5) Visualizar todos os Registros
Escrito por: Rui Costa "
read -p "Escolha uma das opções(1-4): " opc
case $opc in
1) echo ""
adicionar
;;
2) echo ""
apagar
;;
3) echo ""
;;
4) echo ""
pesquisar
;;
5) echo ""
visualizar
;;
*) echo "Opção inválida, por favor selecione uma opção correcta."
exit
;;
esac