18.7.5. Обработка файла с помощью проверок условий
18.7.5. Обработка файла с помощью проверок условий
Большинство циклов while включает некоторый оператор проверки, который уточняет последовательность действий.
Ниже рассматривается файл с именами служащих, и на экран выводятся подробности. После обнаружения имени служащего "James Lenod" сценарий завершает работу. Вывод на экран подробностей до осуществления проверки позволяет удостовериться, что "James Lenod" добавляется в содержимое файла.
Обратите внимание, что все переменные задаются в начале сценария. При внесении небольших поправок в переменные можно сэкономить рабочее время и
сократить количество типов. Все редакторские правки находятся в начале, а не рассеяны по всему сценарию.
$ pg whileread_file
#!/bin/sh
#whileread_file
#инициализация переменных
SAVEDIFS=$IFS
IFS=:
HOLD_FILE=hold_file
NAME_MATCH="James Lenod"
INPUT_FILE=names.txt
# создавайте каждый раз новый HOLD_FILE, в случае, когда сценарий
непрерывно выполняется
>$HOLD FILE
while read NAME DEPT ID
do
#выводит на экран всю информацию в holdfile с помощью перенаправления
echo $NAME $DEPT $ID >>$HOLD_FILE
#имеется ли соответствие ???
if [ "$NAME"="$NAME_MATCH" ]; then
# да, тогда удобно завершить работу
echo "all entries up to and including $NAME_MATCH are in $HOLD_FILE"
exit 0
fi
done < $INPUT_FILE
# восстановление IFS
IFS=$SAVEDIFS
Выполним следующий шаг и уточним количество служащих в каждом из отделов. Сохраним прежний формат просмотра, в котором каждому полю присваивается название переменной. Затем для добавления каждого совпадения с помощью оператора case просто применим команду expr. Если обнаруживается неизвестный отдел, его название выводится на экран в виде стандартного потока ошибок; поэтому, если отдел не существует, нет необходимости прерывать выполнение сценария.
$ pg whileread_cond
#!/bin/sh
# whileread_cond
# инициализация переменных ACC_LOOP=0; CUS_LOOP=0; PAY_LOOP=0;
SAVEDIFS=$IFS
IFS=:
while read NAME DEPT ID
do
# счетчик увеличивается на единицу для каждого совпадающего названия отдела.
case $DEPT in
Accounts)
ACC_LOOP=`expr $ACC_LOOP + 1`
ACC="Accounts"
;;
Customer)
CUS_LOOP=`expr SCUS_LOOP + 1`
CUS="Customer"
;;
Payroll)
PAY_LOOP=`expr $PAY_LOOP + 1`
PAY="Pay roll"
;;
*) echo "`basename $0`: Unknown department $DEPT" >&2
;;
esac
done < names.txt
IFS=$SAVEDIFS
echo "there are $ACC_ LOOP employees assigned to $ACC dept"
echo "there are $CUS_LOOP employees assigned to $CUS dept"
echo "there are $PAY_LOOP employees assigned to $PAY dept"
При выполнении сценария получим следующий вывод:
$ whileread_cond
there are 2 employees assigned to Accounts dept
there are 1 employees assigned to Customer dept
there are 2 employees assigned to Payroll dept
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Указание позиции файла с помощью структуры OVERLAPPED
Указание позиции файла с помощью структуры OVERLAPPED Для указания позиции в файле Windows предоставляет еще один способ, не требующий использования функции SetFilePointer. Вспомните, что последним параметром в обеих функциях ReadFile и WriteFile является адрес структуры перекрытия OVERLAPPED,
17.5. Сетевая обработка с помощью TCP/IP
17.5. Сетевая обработка с помощью TCP/IP Самое важное применение сокетов заключается в том, что они позволяют приложениям, работающим на основе различных механизмов, общаться друг с другом. Семейство протоколов TCP/IP [34] используется в Internet самым большим в мире числом
Просмотр XML-файла с помощью объектной модели Internet Explorer 4.0
Просмотр XML-файла с помощью объектной модели Internet Explorer 4.0 Если требуется только просматривать и анализировать XML-файл, не модифицируя его, то проще всего воспользоваться объектной моделью MSXML, реализованной в Internet Explorer 4.01. Замечание Как отмечено в документации MSDN, эта
Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript)
Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript) Из листинга 10.1 можно понять, что создание компонента-сценария связано с написанием большого количества вспомогательного кода (нужно заполнить элементы <registration>, <property>, <method> и <events>, написать
Обработка запросов с помощью PHP
Обработка запросов с помощью PHP Основы клиент-серверных технологийВ самом начале курса мы уже говорили о том, что PHP – это скриптовый язык, обрабатываемый сервером. Сейчас мы хотим уточнить, что же такое сервер, какие функции он выполняет и какие вообще бывают серверы.
1.1.8. Обработка сообщений с помощью VCL
1.1.8. Обработка сообщений с помощью VCL При использовании VCL в простых случаях самостоятельно работать с оконными сообщениями нет нужды, поскольку практически все можно сделать с помощью свойств, методов и событий компонентов. Тем не менее, некоторые сообщения приходится
Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero
Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero #!/bin/bash# Создание файла подкачки.# Этот сценарий должен запускаться с правами root.ROOT_UID=0 # Для root -- $UID 0.E_WRONG_USER=65 # Не root?FILE=/swapBLOCKSIZE=1024MINBLOCKS=40SUCCESS=0if [ "$UID" -ne "$ROOT_UID" ]then echo; echo "Этот сценарий должен запускаться с правами
11.1.14. Обработка результатов сортировки с помощью команд head и tail
11.1.14. Обработка результатов сортировки с помощью команд head и tail При работе с большими файлами не обязательно выводить на экран весь файл, если требуется просмотреть только его начало и конец. Существуют удобные команды head и tail, упрощающие подобную задачу. Команда head
18.3.23. Несколько проверок, реализуемых с помощью elif
18.3.23. Несколько проверок, реализуемых с помощью elif В следующем несложном примере протестируем введенные в сценарий имена пользователей.Сначала в сценарии проверяется, действительно ли пользователь ввел имя; если имя не введено, то проверка не выполняется. Если имя
20.1.3. Преобразования файла с помощью команды shift
20.1.3. Преобразования файла с помощью команды shift Использование возможностей команды shift значительно облегчает работу с опциями командной строки. Рассмотрим сценарий, выполняющий преобразование регистра символов. При этом будет применяться команда tr.При выполнении
28.3. Ускорение работы с помощью файла inittab
28.3. Ускорение работы с помощью файла inittab Каталог уровня выполнения состоит из набора сценариев, более совершенных, чем службы. Слово "services" в этом контексте означает и демон, и приложение, и серверы, и подсистемы или процессы сценария. Во время загрузки системы вызывается
Глава 6. Мудрость и глупость проверок безопасности
Глава 6. Мудрость и глупость проверок безопасности Системы безопасности должны побеждать каждый раз, а атакующему достаточно и одной победы. Дастин Дюкс Начальник тюрьмы приглашает экспертов для того, чтобы проверить процедуры безопасности в его учреждении, заботясь о
Софт: Конвертация любого файла с помощью Zamzar Евгений Крестников
Софт: Конвертация любого файла с помощью Zamzar Евгений Крестников ОпубликованоЕвгений Крестников Различных онлайн-конвертеров в интернете немало, но этот, пожалуй самый универсальный из всех.Продолжая тему полезных пользователям мобильных
Глава 6. Мудрость и глупость проверок безопасности
Глава 6. Мудрость и глупость проверок безопасности Системы безопасности должны побеждать каждый раз, а атакующему достаточно и одной победы. Дастин Дюкс Начальник тюрьмы приглашает экспертов для того, чтобы проверить процедуры безопасности в его учреждении, заботясь о