Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Оператор цикла while

Читайте также:
  1. Begin IF умова 2 THEN оператор 1 end
  2. Begin оператори; end.
  3. While <булево выражение> do
  4. Анализ динамики рынка, модель жизненного цикла
  5. Арифметические операторы
  6. Арифметические операторы и операторы присваивания
  7. Влияние жизненного цикла туристского продукта на оценку туристских ресурсов
  8. Возврат заявок на участие в электронном аукционе оператором электронной площадки.
  9. Действия оператора поста централизации при отравлении работника.
  10. Действия оператора поста централизации при получении работником ожогов.

 

Формат оператора цикла while:

 

while условие

do

команда

команда

.......

done

 

 

Оператор while повторяет заданную группу команд, если условие выполнения соответствует Истине. Поскольку условие проверяется перед выполнением списка команд, возможна ситуация, когда список не будет выполнен ни разу.

 

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

Пусть эта процедура вызывается на выполнение так:

 

% cmplist file1 file2 file3...

 

где – file1 – файл-образец;

file3 file3... – файлы для сравнения.

 

Текст командной процедуры cmplist:

 

i=$1

while cmp $i $2

do

shift

done

echo $2

 

Процедура cmplist работает следующим образом. Сначала переменной i присваивается значение первого позиционного параметра (это имя файла-образца). Условие выполнения цикла while формируется командой cmp – сравнить файлы. У этой команды два операнда – сравниваемые файлы. Если файлы совпали, команда cmp вырабатывает код возврата «Истина» и выполняются команды из тела цикла (do... done), в противном случае выполнение цикла завершается и выводится имя первого файла, содержимое которого не совпало с содержимым файла-образца.

Тело цикла в данной командной процедуре на редкость простое и короткое. В нем применена встроенная команда интерпретатора shift, которая сдвигает список позиционных параметров влево на одну позицию. Сначала этот список выглядит следующим образом:

 

$1 $2 $3 $4

file1 file2 file3

 

В трех первых позиционных параметрах разместились имена файлов, заданных в качестве аргументов командной процедуры. После однократного выполнения команды shift список параметров будет выглядеть так:

 

$1 $2 $3 $4

file2 file3

 

Таким образом, при первом выполнении командной процедуры сравнивались файлы file1 и file2 (их имена находились в переменной i и втором позиционном параметре). При втором выполнении цикла сравнивались уже файлы file1 и file3, и имена этих файлов по-прежнему находились в переменной i и втором позиционном параметре.

 

 

Пример_2: Разработаем командную процедуру (пусть она называется copy3), которая читает строки со стандартного ввода и размещает их в файле dump. Ввод прекращается, если введена строка, состоящая из одного символа 'q'. Пустые строки в файл dump не записываются.

 

while

echo "Enter words [Type q, to quit]"

read line

do

if test "$line"="q"

then

break

fi

if test "$line"=""

then continue

else

echo "$line" >> dump

fi

done

 

 

Примечания. 1). Оператор break используется в циклах для досрочного выхода из цикла.

2). Оператор continue используется для пропуска команд до конца цикла. При этом осуществляется переход на начало цикла.

3). Оператор if может быть записан без применения встроенной команды test с применением квадратных скобок:

if ["$line"="q"]

 




Дата добавления: 2014-12-19; просмотров: 60 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав