22.3. Обновление записей
22.3. Обновление записей
При рассмотрении процесса удаления записи уже обсуждался код, приводящий к обновлению записи.
Когда обнаруживается корректная запись, все переменные поля записи с помощью переменной, выполняющей присваивание по умолчанию, назначаются переменной temp:
: [переменная, заданная по умолчанию:=переменная)
Пользователь может просто нажать клавишу [Return] для тех полей, значения которых изменять нежелательно. Затем переменная temp заменяется значением, заданным по умолчанию. Для выполнения произвольных обновлений можно просто вводить в соседние поля новые значения.
echo -n -e "EMPLOYEE NO: $C0DE "
echo -n "FIRST NAME : [$F_NAME] >"
read _F_NAME
: ${_FNAME:=$P_NAME}
Для реального обновления файла достаточно снова воспользоваться командой grep с опцией -v. Все записи обновляются по отдельности и перенаправляются во временный файл. Номер служащего задается в виде строки команды grep:
grep ~v $C0DE $DBFILE >$HOLD1
Пользователь получает запрос, нужно ли сохранять данную запись. Если ответ положителен, обновленная запись также добавляется во временный файл. Затем временный файл перемещается в исходный файл DEFILE.
echo "$CODE:$_F_NAME:$_S_NAME:$_DEPART" >> $HOLD1 mv $HOLD1 $DBFILE
После этого выполняется сортировка файла с помощью потока вывода, который сначала перенаправлялся во временный файл, затем перемещается обратно — в исходный файл DBFILE. Проверки кода завершения выполняются во время упомянутых действий с файлами, и пользователю выдаются сообщения об имеющихся затруднениях. Ниже показан поток вывода при обновлении записи.
Enter the employee surname :Penny
searching record.. 7
EMPLOYEE NO: 98211
FIRST NAME : Simon
SURNAME : Penny
DEPARTMENT : Services
ls this the record you wish to amend [Y..N] [Y]:
amending
EMPLOYEE NO: 98211
FIRST NAME : [Simon] >
SURNAME : [Penny] >
DEPARTMENT : [Services] >Accounts Ready to save this record [Y..N] [Y] :
Полный сценарий, выполняющий обновление записей:
$ pg dbasechange
#!/bin/sh
# dbasechange
• обновление записи
• игнорирование сигналов trap "" 2 3 15
• временные файлы DBFILE=DBFILE HOLD1=HOLD1.$$ HOLD2=HOLD2.$$
continue_promptYN()
{
• continue_jprompt _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 is $_DEFAULT";;
esac
done }
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 " " }
no_recs()
{
# no_recs
echo -e " Sorry 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 "
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
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
8.9.2 Обновление таблиц RIP
8.9.2 Обновление таблиц RIP Как видно на рис. 8.5, маршрутизатор А пересылает трафик в сеть 136.10.0.0 через маршрутизатор B. А получил изменения от своего соседа D, который объявил о более коротком маршруте, и А изменил свою таблицу маршрутизации. Отметим, что количество попаданий от
Обновление
Обновление Настройку выхода в интернет мы закончили, идём дальше. Многие на этом этапе локализуют (загружают поддержку русского языка), но я придерживаюсь мнения, что сначала необходимо обновить нашу операционную систему.Это делается очень просто. Для этого идём в
Обновление Windows
Обновление Windows За время существования Windows для нее выпущено несколько сотен (!) разнообразных заплаток. Самые важные из них объединены в так называемые Service Packs: их было выпущено всего три (в каждый новый Service Pack включены все обновления из предыдущего). Помните только, что
3.3.3.5. Обновление пакета
3.3.3.5. Обновление пакета Пакет уже установлен, но вы скачали в Интернете его новую версию, поэтому вам его нужно обновить. Для обновления пакета используется опция -U. Данную опцию можно использовать вместе с опциями hv, если вы хотите видеть индикатор процесса обновления:rpm -
14.1. Обновление определений
14.1. Обновление определений Защитник Windows в своей работе использует специальную таблицу определений, которая содержит описание кусков кода всех существующих вирусов, троянов и других подобных программ. И если эта таблица не будет содержать актуальных данных, программа
Автоматическое обновление
Автоматическое обновление Любой программный продукт постоянно дорабатывается и совершенствуется (если, конечно, он не снят с обслуживания и поддержки ввиду появления новых версий или по иным причинам). Это касается и операционной системы Windows 7: разработчики постоянно
Совмещение и обновление
Совмещение и обновление CVS всегда помнит, какие редакции у вас находятся в рабочем каталоге. Для изменённых файлов он помнит, какие редакции у них были до того, как вы начали изменять эти файлы. Это необходимо, чтобы правильно совместить несколько изменений, произошедших с
Обновление размера
Обновление размера Команда DIMSTYLE с ключом apply обеспечивает обновление размера и вызывается из падающего меню Dimension ? Update или щелчком на пиктограмме Dimension Update на панели инструментов
Автоматическое обновление
Автоматическое обновление Купив последнюю версию Windows, вы покупаете не совсем последнюю версию. Пройдет совсем немного времени, и программисты компании Microsoft (или просто доброхоты-любители) обнаружат, что в системе есть уязвимость, через которую можно проникнуть на
Обновление записей в приложении просмотра данных
Обновление записей в приложении просмотра данных До сих пор в приведенных ранее примерах нам удавалось только извлекать и просматривать данные. А изменять данные можно было только в элементах пользовательского интерфейса, но их нельзя было сохранить (зафиксировать) в
Запросы на обновление
Запросы на обновление Запрос на обновление может изменить сразу целую группу записей. Этот запрос состоит из трех частей:• предложение UPDATE, которое указывает на обновляемую таблицу;• предложение SET, задающее данные для обновления;• необязательный критерий WHERE,
Обновление системы
Обновление системы На вкладке Автоматическое обновление в окне Свойства системы снимаем флажок Выполнять обновление
10.1.2. Обновление файла
10.1.2. Обновление файла Чтобы открыть файл для чтения и записи, достаточно добавить знак плюс (+) в строку указания режима (см. раздел 10.1.1):f1 = File.new("file1", "r+")# Чтение/запись, от начала файла.f2 = File.new("file2", "w+")# Чтение/запись; усечь существующий файл или создать новый.f3 = File.new("file3", "а+")#
Обновление Dr.Web
Обновление Dr.Web Для эффективной антивирусной защиты следует периодически обновлять вирусные базы с помощью Интернета. Программа Dr.Web умеет делать это автоматически, и при наличии постоянного подключения к Интернету вы будете периодически получать сообщения в области