Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_lab_OSUNIX_2006-ukr.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
760 Кб
Скачать
☆

If список команд

then

список команд

else

список команд

fi

Якщо застосувати умову elif, сумісно з командою if, можна отримати перевірку ще однієї умови. Тоді оператор набуває такого вигляду:

if test -f "$1"

then

pr $1

elif test -d "$1"

then

cd $1; pr *

else

echo $1 не є ні файлом, ні каталогом

fi

Слід зауважити, що більш складні конструкції в операторі if застосовувати небажано. Краще застосовувати вкладені оператори if або оператор case.

Кодом завершення команди if є код завершення останньої виконаної команди після умов then або else. Коли команди не виконуються, то код завершення дорівнює 0.

4.3.6.2 Використання оператора case

Оператор case надає можливість перевіряти різні умови. Форматом команди case є:

case рядок in

шаблон ) cписок команд ;;

....

шаблон ) cписок команд ;;

esac

shell шукає вказаний підрядок, по черзі, у кожному шаблоні, використовуючи умови, що використовуються до генерації імен файлів. Коли встановлено відповідність шаблону та підрядка, виконується список команд цього шаблону. Два символи (;;) означають кінець оператора case і потрібні після кожного шаблону крім останнього.

Код завершения оператора case дорівнює коду завершення останньої виконаної команди. Якщо ніякі команди не виконувалися, то код завершення дорівнює 0.

4.3.6.3 Умовні цикли while та until

Загальна форма команди while має вигляд:

while список команд

do

список команд

done

Спочатку виконуються команди з першого списку. Коли код завершення останньої команди першого списку дорівнюватиме 0, тільки потім виконуватимуться команди з другого. Ця послідовність повторюватиметься до тих пір, доки код завершення останньої команди першого списку дорівнюватиме 0. Якщо потрібно, щоб цикл виконувався до тих пір, поки код завершення останньої команди першого списку не дорівнював 0, необхідно використати оператор until.

4.3.6.4 Організація циклу для списку: for

Коли виникає потреба виконати деякий набір операцій для кожного файла, з будь-якого списку, або виконати одну команду для кожного з декількох аргументів, то застосовують команду for. Формат команди for такий:

for змінна in список значень

do

список команд

done

Значення у списку поділяються подільниками. Команди зі списку виконуються один раз для кожного значення змінної зі списку значень. Змінній, по черзі, присвоюється кожне значення зі списку. Наприклад, наступний цикл for виконує порівняння текстів xec.c, cmd.c та word.c у поточному каталозі з файлами, з такими іменами, в іншому - /usr/src/cmd/sh:

for CFILE in xec cmd word

do diff $CFILE.c /usr/src/cmd/sh/$CFILE.c

done

Зверніть увагу на те, що у CFILE після слова for не супроводжується появою символу "$", оскільки використовується ім’я змінної, але не її значенням. Слово "in", яке є частиною команди for, можна не вказувати. Оскільки у цьому випадку буде використаний набір позиційних змінних замість списку значень. Як приклад розглянемо фрагмент:

cat > echo2

for word

do

echo $word$word

done

C-l_D

chmod +x echo2

echo2 ma pa

Після виконання отримаємо:

mama

papa