Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
27.03.2016
Размер:
341.5 Кб
Скачать

16.1 Зарезервовані змінні

Ці спеціальні змінні встановлюються інтерпретатором shell, а не користувачем.

# - кількість аргументів. Кількість параметрів не враховуючи $0, які використано для запису аргументів.

$ set ‘date’

$ echo $#

5 [встановлено 5 позиційних параметрів]

? – код повернення.

Код стану, що повертається shell командою, яка була виконана останньою. У загальному випадку при успішному виконанні команди повертається 0 .

$ echo $?

0

$_

$ - ідентифікаційний номер поточного процесу.

Виходячи з того, що номер будь-якого процеса унікальний, іноді його використовують як тимчасовий файл.

$ tempfile = fileSS [присвоює значення змінній tempfile]

$ sortfile –0 $tempfile [вивід змінної tempfile]

$ mv $ tempfile file1

! – ідентифікаційний номер фонового процесу, що викликано останнім

$ echo $!

243

$_

  • - стан прапорців інтерпретатора shell. Ця змінна визначає всі поточні прапорці інтерпритатора shell, які могло бути встановлено або скинути командою set.

$ echo $-

s

$

17. Керуючі структури у мові b-shell

Команди true, false.

$ true ; A=$ ? true

$ false ; B=$? False

$ echo $A $B

  1. 1

$_

Цикл типу while true (цикл до тих, доки )

While <список команд>

Do [команди виконаня

Done між do та done]

Команда while перевіряє код повернення списку команд, яким може бути як окрема команда так і група команд. Потім у залежності цього значення виконує відповідні дії.

While true

Do echo This is an ENDLESS loop

Done – ця команда створить вічний цикл, оскільки повернення команди true завжди нульове. Закінчити роботу можна тільки через DEL.

Цикл типу until (до):Дія виконується як і у попередньому прикладі, але за виключенням того, що умовою входу в середину є ненульове значення (false)

Until false

Do echo This is an ENDLESS loop

Done

Виконує те саме, що й попередньому випадку і як і у попередньому випадку тільки DEL зупинить виконання команди (вхід до циклу повинен бути ненульовим значенням).

17.1 Завдання директив інтерпретатору shell. Групування

$ (cd/user/james/men.spec; nohup nroff doc1:1pr &)

$_

еквівалент

$ cd/user/james/men.spec; nohup nroff doc1: 1pr &;cd

$_

Групування списку команд в середині фігурних дужок передписує shell читати і виконавати вкладені у дужках команди, які створюють об’днаний вивід. Цей метод дозволяє використовувати вивід декількох команд як вхід іншої команди:

$ {nroff -mm text1; nroff -mm text2;} col :1pr

формування та друк файлу.

17.2 Умовне виконання

Shell дозволяє викликати список команд у залежності від використання умов.

$ ls -1 ;who

Якщо об’єднати дві команди за допомогою оператора AND-IF(&&)f або оператора OR-IF (::), можна використовувати додаткові можливості shell.

OR-IF має вигляд

$ command1 :: command2

приклад

$ mkdir sample

$ rmkdir sample > /dev/null :: echo failure

$ rmkdir sample > /dev/null :: echo failure

failrue

$_

При виконанні другого рядка повідомлення не виводиться тому, що команда видалення каталогу завершується успішно. При виконанні третього рядка каталог вже був видалений тому команда rmdir sample завершується аварійно (не може бути виконана) і виконується echo failure.

$ command1 && command2

$_

Наприклад:

$ test -f .profile && cp.profile backup

$_

test -f .profile перевіряє, якщо файл .profile у поточному каталозі, якщо виконується цей командний рядок, знаходячись у начальному каталозі, у якому с файл .profile, shell створить копію цього файлу з ім’ям backup. Якщо викликається командний рядок з одного каталогів, де .profile – відсутнійб копія не буде створюватись.

$ THIS =145

$ THAT-abc

$ echo ${THIS + $THAT}

abc

$ echo $THIS

123

$_

Соседние файлы в папке Додаткова інформація