POS/Lab 3 2022
< ПОС
Pređi na navigaciju
Pređi na pretragu
Grupa 1
Zadatak 1
Napisati skriptu koja služi za vođenje evidencije o licima. Evidencija se nalazi u datoteci čiji redovi imaju format <презиме> <име> <ЈМБГ> <досије>. Jedan red predstavlja evidenciju o jednom licu. Polje <досије> sadrži putanju do direktorijuma u kome se nalaze datoteke vezane za tu osobu.
Skripta ima sledeće argumente:
- Opcija
-lbez parametara koja treba da ispiše sva imena, prezimena i matične brojeve lica koja se nalaze u datoteci. - Opcija
-abez parametara treba da omogući dodavanje informacije o novom licu tako što ukoliko je ova opcija navedena skripta treba da omogući unos prezimena, zatim imena i na kraju JMBG. Potrebno je nakon toga da proveri ispravnost unetog JMBG (broj sadrži tačno 13 cifara). Ukoliko nije ispravan, treba ispisati poruku o grešci i prekinuti skriptu. Na kraju ako je JMBG ispravan, treba kreirati direktorijum za dosije sa nazivomпрво_слово_презимена_ЈМБГ_прво_слово_имена. Za unos podataka koristiti komanduread. - Opcija
-ssa parametrom koji predstavlja dve cifre. Na osnove te dve cifre skripta treba da ispiše sva imena i prezimena lica koja imaju u svom JMBG na mesto 8. i 9. cifre te dve cifre. (Ove dve cifre predstavljaju političku regiju gde je neko rođen).
Putanja do datoteke i putanja do direktorijuma gde se kreiraju direktorijumi za dosijee treba da budu definisane kao promenljive unutar same skripte. Primer datoteke:
Petrovic Petar 1234561234569 /home/pos/P1234561234569P Jovanovic Ivan 1234512345123 /home/pos/J1234512345123I Markovic Milica 5678956789123 /home/pos/M5678956789123M
Rešenje
- Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Ispod je jedno rešenje za 9/14 bodova.
#!/bin/bash
list=0
append=0
opcije='las:'
while getopts $opcije opt; do
case $opt in
l) list=1
;;
a) append=1
;;
s) cifre= $OPTARG
;;
*) echo "Nepravilno koriscenje skripte"
exit -1
;;
esac
done
if [ $list ]; then
cat $file # Коментар: "| cut ..."
fi
if [ $append ]; then
echo "unesi prezime"
read prezime
echo "unesi ime"
read ime
echo "unesi jmbg"
read jmbg
if ! [ "$(echo jmbg | sed -E 's/[0-9]{13}')" ]; then
echo "neispravan jmbg"
exit -2
fi
prvo_slovo= echo $prezime | sed -E 's/([a-z]{1})([a-Z]*)/\1/'
mkdir "$prvo_slovo _$jmbg"
fi
if [ $cifre ]; then
brojevi= echo $jmbg | sed -En 's/([0-9]{7})([0-9]{2})[0-9]{4}/\2/'
if [ $brojevi -eq $cifre ]; then
for i in $file; do
echo $i # Коментар: "sve linije stampa"
done
fi
fi