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

Если пользователь выбирает N, производится просмотр блоков кода в конструкции if и выполнение сценария завершается. При вводе пользователем большого числа записей следует применить функцию, которая добавляет записи в теле цикла while. Тогда после добавления записи возврат в меню не происходит, а выполнение сценария не завершается.

Если пользователь выбирает Y, запись сохраняется. Для добавления записи в файл применяется следующий код:

echo "$NUM:$F_NAME:$S_NAME:$DEPART" >> $DBFILE

Пользователь получает сообщение о том, что запись сохраняется в файле; при этом команда sleep приостанавливает выполнение сценария на одну секунду. Именно за это время пользователь сможет просмотреть сообщение.

Разделителем поля служит двоеточие. Затем файл сортируется по полю, содержащему фамилию, а поток вывода направляется в файл temp. После этого файл перемещается назад, в исходный файл DEFILE. Во время перемещений файла выполняется проверка кода завершения. При появлении каких‑либо затруднений пользователь получает соответствующее сообщение.

Вот как выглядит поток данных вывода в случае добавления записи:

ADD A RECORD

Employee Staff Number : 23233

Employee's First Name : Peter

Employee's Surname : Wills

Company Department : Accounts

Do You wish To Save This Record [Y..N] [Y]:

saved

А теперь обратите внимание, какой вид имеет файл DBFILE после добавления нескольких записей:

$ pg DBFILE

32123:Liam:Croad:Claims 2399:Piers:Cross:Accounts 239192:John:Long:Accounts 98211:Simon:Penny:Services 99202:Julie:Sittle:XT 23736:Peter:Wills:Accounts 89232:Louise:Wilson:Accounts 9l811:Andy:Wools:IT

Ниже приодится полный сценарий, выполняющий добавление записи:

$ pg dbase_add

#!/bin/sh

#dbase_add

#добавление записи

#игнорирование сигналов

trap "" 2 3 15

#файл temp содержит файлы

DBFILE=DBFILE

HOLD1=HOLD1.$$

read_a_char ()

#read_a_char

#сохранение установок

SAVEDSTTY=`stty -g`

stty cbreak

dd if=/dev/tty bs=1 count=1 2> /dev/null

stty -cbreak

stty $SAVEDSTTY

}

continue_promptYN()

#вызов: continue_prompt "string to display" default_answer

{

# 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|Y|Yes|YES)

return 0 ;;

n|N|No|NO)

return 1 ;;

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

esac

echo $_ANS

done

)

continue_prompt() {

# continue_prompt

echo -n "Hit any key to continue.."

DUMMY=`read_a_char`

}

length_check ()

# length_check

# $1=строка для проверки длины $2=максимальная длина

_STR=$1

_МАХ=$2

_LENGTH=`echo $_STR | awk '{print length ($0)}`

if [ "$_LENGTH" -gt "$_MAX" ]; then

return 1 else

return 0 fi

}

a_number()

(

#a_number

#вызов: a_number $1=number _NUM=$1

_NUM=`echo $1|awk '{if($0~/[^0-9]/) print "1"}'`

if [ "$_NUM" != "" ]

then

# ошибки

return 1

else

return 0

fi

}

characters()

#characters

#вызов: char_name string {

_LETTERS_ONLY=$1

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

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

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

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

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

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

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

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

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