Шрифт:
else
LEN_PASS=1
fi
# проверка наличия дубликатов… if check_duplicate $NUM; then
DUPLICATED=0
else
DUPLICATE=1
echo "Staff Number: There ls already a employee with this number" continue_prompt
fi
if [ "$LEN_PASS"="0" -a "$NUM_PASS"="0" -a "$DUPLICATE"="0" ] then
break
else
echo "Staff Number: Non-Numeric or Too Many Numbers In Field" continue_prompt
fi
else
echo "Staff Number: No Input Detected, This Field Requires a Number" continue_prompt fi done
# == Имя
while :
do
echo -n "Employee's First Name:"
read F_NAME
if [ "$F_NAME" != "" ]; then
if characters $F_NAME; then
F_NAME_PASS=0
else
F_NAME_PASS=1
fi
if length_check $F_NAME 20; then
LEN_PASS=0
else
LEN_PASS=1
fi
# oбa условия должны быть истинными для выхода из этого цикла if [ "$LEN_PASS"="0" -a "$F_NAME_PASS"="0" ]; then
break
else
echo "Staff First Name: Non-Character or Too Many Characters In Field" continue_prompt
fi
else
echo "Staff First Name: No Input Detected, This Field Requires Characters"
continue_prompt
fi
done
# == Фамилия
while :
do
echo -n "Employee's Surname :"
read S_NAME
if [ "$S_NAME" != "" ]; then if characters $S_NAME; then
$_NAME_PASS=0
else
$_NAME_PASS=1
fi
if length_check $S_NAME 20; then
LEN_PASS=0
else
LEN_PASS=1
fi
if [ "$LEN_PASS"="0" -a "$S_NAME_PASS"= "0" ]; then
break else
echo "Staff Surname: Non-Character or Too Many Characters In Field" continue_prompt fi else
echo "Staff Surname: No Input Detected, This Field Requires Characters" continue_prompt fi done
# == Отдел
while :
do
echo -n "Company Department :" read DEPART case $DEPART in
ACCOUNTS|Accounts|accounts) break;;
SALES|Sales|sales) break;; IT|It|it) break;;
CLAIMS|Claims|claims) break;;
Services|SERVICES|services) break;;
*) echo "Department: Accounts, Sales, IT, Claims, Services";; esac done )
# основная программа
clear
echo -e "\t\t\tADD A EMPLOYEE RECORD"
if [ -s $DBFILE ]; then :
else
echo "Information: Creating new file to add employee records"
>$DBFILE fi
add_rec if continue_promptYN "Do You wish To Save This Record " "Y"; then
echo "$NUM:$F_NAME:$S_NAME:$DEPART" >> $DBFILE
echo "record saved"
sleep 1
sort +2 -t: $DBFILE > $HOLD1 2> /dev/nuil
if [ $?
– ne 0 ]; then
echo "problems trying to sort the file..check it out"
exit 1 fi
mv $HOLD1 $DBFILE if [ $?
– ne 0 ]; then
echo "problems moving the temp sort file..check it out"
exit 1 fi
else
echo " record not saved"
sleep 1 fi
22.2. Удаление записей
Прежде чем удалить запись из файла, ее нужно сначала отобразить для пользователя, чтобы он мог убедиться, что именно эта запись подлежит удалению. После получения подтверждения можно приступать к удалению записи.
При удалении записи выполняются следующие операции:
1. Поиск записи.
2. Отображение записи.
3. Подтверждение процедуры удаления.
4. Обновление файла.
Чтобы найти запись, воспользуемся полем, где содержатся фамилии. После того как пользователь введет фамилию, по которой ведется поиск, можно приступать к
обработке. Можно применить команду grep или утилиту awk. Но поскольку данный файл, скорее всего, содержит не более 100 записей, просмотрим его и определим наличие совпадений.
Если же файл содержит более двух сотен записей, желательно воспользоваться утилитой awk. Это значительно быстрее, чем просмотр файла; к тому же утилита awk более удобна при разделении полей, принадлежащих переменным.
Чтобы применить команду grep или утилиту awk, можно выполнить поиск в файле DBFILE:
echo "enter the surname to search "
read STR
#при работе с awk используйте команду
awk -F: '/$STR/' DBFILE
#при работе с grep используйте команду
grep "$STR" DBFILE