Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

При считывании значения каждого поля файла используются значащие наименования переменных. Затем при считывании записей применяется счетчик. Действительно, такой прием отражается только на внешней форме сценария и позволяет контролировать процесс поиска записей. Если совпадение найдено, вызывается другая процедура, которая приводит к отображению значений полей. Команда break позволяет прекратить выполнение цикла. Если совпадение не обнаружено, сценарий продолжает выполняться до следующей итерации цикла.

Когда устанавливается соответствие, пользователь получает запрос, действительно ли нужно удалить запись. По умолчанию ответ будет по.

if continue_promptYN "Do You Wish To DELETE This Record" "N"; then

echo "DEL"

grep -v $STR DBFILE >$HOLD1 2> /dev/null

if [ $? -ne 0 }; then

echo "Problems creating temp file $HOLD1.. check it out"

exit 1 fi

Удаление записи выполняется выполнением команды grep с опцией -v. В этом случае с помощью строки STR отображаются все несовпадающие поля. (Эта строка содержит фамилию, которая запрашивается пользователем при удалении записи.)

Поток данных вывода для команды grep перенаправляется во временный файл, где выполняется сортировка. Затем временный файл заменяет исходный файл DBFILE.

При реализации всех перемещений данных выполняется проверка с помощью кода завершения последней команды. Ниже показан поток вывода при удалении записи:

Enter the employee surname :Wilson

searching record,. 6

EMPLOYEE NO: 69232 FIRST NAME : Louise SURNAME : Wilson DEPARTMENT : Accounts

Do You Wish To DELETE This Record [Y..N] [N] :

А теперь приведем полный сценарий, выполняющий удаление записи:

$ pg dbase_del

#!/bin/sh

#dbase_del

#удаление записи

#перехват сигналов

trap "" 2 3 15

#Файл данных

DBFILE=DBFILE

#временные файлы

HOLD1=HOLD1.$$

HOLD2=HOLD2.$$

continue_promptYN(} {

#continue_prompt

_STR=$1

_DEFAULT=$2

#проверим наличие правильных параметров

if [ $# -lt 1 ]; then

echo "continue_prompt: I need a string to "display"

return 1

fi

while : do

echo -n "$_STR [Y..N] [$_DEFAULT]:"

read _ANS

: ${_ANS:=$_DEFAULT}

if [ "$_ANS"="" ]; then

case $_ANS "in

Y) return 0 ;;

N) return 1 ;;

esac

fi

case $_ANS in

у|Y|Yes|YES)

return 0;;

n|N|No|NO)

return 1;;

*) echo "Answer either Y or N, default is $_DEFAULT"

esac

done

}

display_rec()

{

#display_rec

#можно воспользоваться командой 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`

echo -n " searching record.. $REC"

if [ "$S_NAME" = "$STR" ]; then

MATCH=yes

display_rec

break

else

continue

fi

done << $DBFILE

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 "Do You Wish To DELETE This Record" "N"; then echo "DEL"

grep -v $STR DBFILE >$HOLD1 2> /dev/null if [ $? -ne 0 ]; then

Перейти на страницу:

Похожие книги

112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)
112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)

  По Парижу приятно гулять, бесцельно бродить, кружить по узким улочкам, отдыхать в маленьких кафе и в парках у фонтанов. Здесь есть все для любителей архитектуры, ценителей живописи, театралов, меломанов, гурманов, поклонников всевозможных развлечений. Париж притягивает, удивляет, очаровывает, постепенно приоткрывая тайны любознательному гостю, который теряется от сложности выбора: что же увидеть прямо сейчас, а что отложить на потом. Мои 112 страниц про Париж, надеюсь, помогут сделать этот выбор. Предложенные 7 прогулок по городу включают в себя не только известные всему миру достопримечательности, но и множество других, которые часто остаются за пределами стандартных туристических маршрутов.  

Елена Р Стамбулян , Елена Р. Стамбулян

Руководства / Путеводители / Словари и Энциклопедии
40+. Уход за телом
40+. Уход за телом

Женщина после 40 лет – настоящая богиня, умудренная опытом и оттого еще более прекрасная. Но чтобы надолго сохранить красоту и молодость, нужно постоянно собой заниматься: ухаживать за своим телом, руками и ногами, выполнять физические упражнения и соблюдать диету. Благодаря этой книге вы научитесь самостоятельно готовить омолаживающие, питательные, увлажняющие кремы и маски, а также скрабы и пилинги из натуральных продуктов; выполнять легкие и эффективные упражнения для стройной фигуры и профилактики варикозного расширения вен, делать массаж рук и ног, навсегда избавитесь от целлюлита и сможете легко ориентироваться в выборе омолаживающих процедур в СПА-салонах и хирургических операций в клиниках красоты. Правила здорового питания, популярные диеты и рецепты полезных блюд – в этой книге есть все, что поможет 40-летним женщинам всегда быть в форме.

Анастасия Витальевна Колпакова

Здоровье / Руководства / Здоровье и красота / Дом и досуг / Словари и Энциклопедии