• отображение_записи
• можно применить команду cat « документ, но нежелательно tput cup 5 3
echo "EMPLOYEE NO: $CODE" echo "FIRST NAME : $F_NAME" echo "SURNAME : $S_NAME" echo "DEPARTMENT : $DEPART" echo -e "\n\n" }
no_recs()
{
# no_recs
echo -e "\n\nSorry could not find a record with the name $STR" }
get_rec ()
{
# get_rec
clear
echo -n "Enter the employee surname :"
read STR
if [ "$STR"="q" ]; then
return 1 fi
REC=0
MATCH=no
if [ "$STR" != "" ]; then
while read CODE F_NAME S_NAME DEPART do
REC=`expr $REC + 1` tput cup 3 4
echo -n " searching record.. $REC" if [ "$S_NAME"="$STR" ); then
MATCH=yes
display_rec
break
else
continue
fi
done
else
echo "Enter a surname to search for or q to quit"
fi
if [ "$MATCH"="no" ]; then
no_recs
fi
# основная программа
SAVEDIFS=$IFS
IFS=: get_rec
if [ "$MATCH" = "yes" ]; then
if continue_promptYN "Is this the record you wish to amend" "Y"
then
echo "amending"
# нельзя изменить код служащего .
echo -n -e "EMPLOYEE NO: $CODE\n"
echo -n "FIRST NAME : [$F_NAME] >"
read _F_NAME
: ${_FNAME:=$F_NAME}
echo -n "SURNAME : [$S_NAME] >"
read _S_NAME
: ${_S_NAME:=$S_NAME}
echo -n "DEPARTMENT : [$DEPART] >"
read _DEPART
: ${_DEPART:=$DEPART}
grep -v $CODE $DBFILE >$HOLD1
if [ $? -ne 0 ]; then
echo "Problems creating temporary file..check it out"
exit 1
fi
if continue_promptYN "Ready to save this record" "Y"; then
echo "$CODE:$_F_NAME:$_S_NAME:$_DEPART" >> $HOLD1
mv $HOLD1 $DBFILE
if [ $? -ne 0 ]; then
echo "Problems moving temporary file…check it out"
fi
echo " Record Amended" # сортировка файла после изменений sort +2 -t: $DBFILE >$HOLD2 2> /dev/null
if [ $? -ne 0 ]; then
echo "problems trying to sort the file..check it out"
exit 1
fi
mv $HOLD2 $DBFILE if [ $? -ne 0 ]; then
echo "problems moving the temp sort file..check it out"
exit 1
fi
else
#если обновление прерывается
echo "Amend aborted"
exit 0
fi
else
# если не выполняется обновление
echo "no amending"
# нет удаления
fi
# если желательно удалить
fi
# если имеется совпадение
IFS=$SAVEDIFS
22.4. Просмотр записей
Пользователь может просматривать как все записи, так и отдельную запись. Если пользователь желает просмотреть все записи, достаточно воспользоваться конструкцией cat и awk. Если в запись входит большое количество полей, требуется более дружественный для пользователя вывод данных. Однако такой подход может негативно сказаться на других свойствах сценария.
if [ "$STR"="all" ]; then
echo "Surname Name Employee Code"
echo "______________________________"
cat $DBFILE | awk -F: '{print $2"\t"$3"\t\t"$1}' | more
return 0
fi
При рассмотрении процесса удаления и обновления записей рассматривался код, приводящий к отображению отдельной записи. Небольшое изменение кода связано с тем, что при выборе пользователем этой опции, запись выводится на экран. Ниже приводится часть кода, который позволяет пересылать запись на принтер:
pg << MAYDAY
RECORD No : $REC
EMPLOYEE NUMBER : $CODE
EMPLOYEE NAME : $F_NAME