ПОС/Лаб 3 2022

Извор: SI Wiki
< ПОС
Датум измене: 1. октобар 2022. у 20:20; аутор: KockaAdmiralac (разговор | доприноси) (Treći lab ove godine od `<@793489760256917515>`)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Група 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