ПОС/Лаб 3 2022
< ПОС
Пређи на навигацију
Пређи на претрагу
Група 1
Задатак 1
Написати скрипту која служи за вођење евиденције о лицима. Евиденција се налази у датотеци чији редови имају формат <презиме> <име> <ЈМБГ> <досије>
. Један ред представља евиденцију о једном лицу. Поље <досије>
садржи путању до директоријума у коме се налазе датотеке везане за ту особу.
(3п) Скрипта има следеће аргументе:
- (0п) Опција
-l
без параметара која треба да испише сва имена, презимена и матичне бројеве лица која се налазе у датотеци. - (5п) Опција
-a
без параметара треба да омогући додавање информације о новом лицу тако што уколико је ова опција наведена скрипта треба да омогући унос презимена, затим имена и на крају ЈМБГ. Потребно је након тога да провери исправност унетог ЈМБГ (број садржи тачно 13 цифара). Уколико није исправан, треба исписати поруку о грешци и прекинути скрипту. На крају ако је ЈМБГ исправан, треба креирати директоријум за досије са називомпрво_слово_презимена_ЈМБГ_прво_слово_имена
. За унос података користити командуread
. - (1п) Опција
-s
са параметром који представља две цифре. На основе те две цифре скрипта треба да испише сва имена и презимена лица која имају у свом ЈМБГ на место 8. и 9. цифре те две цифре. (Ове две цифре представљају политичку регију где је неко рођен).
Путања до датотеке и путања до директоријума где се креирају директоријуми за досијее треба да буду дефинисане као променљиве унутар саме скрипте. Пример датотеке:
Petrovic Petar 1234561234569 /home/pos/P1234561234569P Jovanovic Ivan 1234512345123 /home/pos/J1234512345123I Markovic Milica 5678956789123 /home/pos/M5678956789123M
Решење
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
Испод је једно непотпуно решење:
#!/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