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

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

Формулювання умов за допомогою test

Читайте также:
  1. ДОСЛІДЖЕННЯ ТЕМНОВОЇ АДАПТАЦІЇ ЗА ДОПОМОГОЮ ОРІЄНТОВНОГО МЕТОДУ.
  2. Оцінка параметрів лінійної регресії за допомогою метода найменших квадратів
  3. Поняття мета в управлінні та вимоги до їх формулювання
  4. Фосфатидна кислота є біологічно активною молекулою, і може бути перетворена за допомогою фосфогідролази в

В Bash неможливо прямо задавати умови, наприклад, для порівняння змінної і значення. По-перше, вся архітектура Bash заснована на тому, що всі дії здійснюються за допомогою команд, побудованих за однаковим зразком, по-друге, спеціальні символи <та> вже закріплені для виконання інших функцій. Тому для формулювання умов в циклах і точках переходу в Bash необхідно використовувати команду test. (Між іншим, test є самостійною командою і існує не тільки в Bash. Ця команда була інтегрована в Bash, щоб збільшити швидкість обробки даних).

Команда test повертає значення 0 (істина), якщо умова виконується, або 1 (не істина), якщо не виконується. Для скорочення друкованої роботи передбачений короткий варіант запису в квадратних дужках.

Команда test використовується для вирішення задач двох класів: для порівняння двох чисел, для порівняння послідовностей символів і для того, щоб дізнатися, чи існує файл і проявляє він певні властивості. У наступних прикладах показані деякі можливі варіанти застосування цієї команди.

1. test "$х" - перевіряє, чи зайнятий х (тобто, якщо в послідовності символів міститься 0 символів, маємо «не істина»; в іншому випадку «істина»).

2. test $х -gt 5 - перевіряє, чи має змінна х числове значення більше 5. Якщо х не містить числа, виводиться повідомлення про помилку. Замість -gt (більше) можуть також використовуватися наступні оператори порівняння: -eq (дорівнює), -ne (не дорівнює), -lt (менше), -le (менше або дорівнює) і -ge (більше або дорівнює).

3. test -f $х – перевіряє, чи існує файл з ім'ям, зазначеним у х.
Якщо необхідно інтерактивно виконувати команду test в оболонці, після неї потрібно зчитати значення змінної $? (Значення, що повертається останньою командою) за допомогою echo:

user$ a=20

user$ test $a - eq 20; echo $?

0

user$ test $a - gt 20; echo $?

1

Умовні переходи Case

Конструкції с ase вводяться ключовим словом с ase, за яким слідує параметр, призначений для аналізу (зазвичай це змінна). Після ключового слова in можна вказати кілька можливих шаблонів рядки, з якими буде порівнюватися параметр. При цьому можуть використовуватися ті ж джокерні символи, що і при роботі з іменами файлів. Шаблон завершується круглою дужкою, тобто, наприклад, - - *). Це робиться для розпізнавання таких послідовностей, які починаються з двох знаків «мінус». Кілька шаблонів можна відокремлювати один від одного символом |. У такому випадку перевіряються обидва шаблони. Наприклад, *.c | *.h) служить для розпізнавання файлів *.c і *.h в одному і тому ж розгалуженні програми.

Команди, що йдуть слідом за дужками, повинні завершуватися двома крапками з комою. Якщо буде потрібно перехід else, то в якості останнього шаблону необхідно вказати * такому шаблону будуть відповідати всі послідовності символів. При обробці конструкції з с ase враховується тільки перший перехід, в якому параметр відповідає зазначеному шаблону.

У наступному прикладі casetst показано застосування с ase для класифікації переданих параметрів на імена файлів. Цикл для змінної і виконується з усіма параметрами, переданими файлу оболонки. У цьому циклі кожен окремий параметр аналізується за допомогою с ase. Якщо параметр починається з дефіса (-), то він знаходиться в кінці змінної OPT, в іншому випадку в кінці DAT.

#! /bin/sh

# Приклад casetst

opt= # Видалення opt і dat

dat=

for i do # Цикл для всіх переданих параметрів

case "$i" in

-*) opt="$opt $i";;

*) dat="$dat $i";;

esac

done # Кінець циклу

echo "Options: $opt" echo "Files: $dat"

Тестовий запуск файлу оболонки на практиці показує, як працює цей простий оператор вибору. Параметри, передані по порядку без сортування, поділяються на імена файлів і параметри:

user$ casetst -x -y dat1 dat2 -z dat3

Options: -x -y - z

Files: dat1 dat2 dat3

За тим самим принципом умовні переходи case можуть використовуватися для класифікації певних розширень файлів (шляхом зазначення пошукового шаблону *.abc). Якщо ви хочете щільніше зайнятися case -аналізом, подивіться файл оболонки /usr/bin/gnroff. У ньому дається синтаксис параметрів, що передаються Nroff, у вигляді, зрозумілому спорідненsq команді groff.




Дата добавления: 2015-04-11; просмотров: 20 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | 5 | 6 | <== 7 ==> | 8 | 9 |


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