Інтерпретатор командного мови shell

3. Керуючі конструкції

Проста команда - це послідовність слів, поділена пробілами. Перше слово є ім'ям команди, яка буде виконуватися, а інші будуть передані їй як аргументи. Ім'я команди передається їй як аргумент номер 0 (тобто ім'я команди є значенням $ 0). Значення, що повертається простий командою - це її статус завершення, якщо вона завершилася нормально, або (вісімкове) 200 + статус, якщо вона завершилася аварійно.

Список - це послідовність одного або декількох конвеєрів, розділених символами;, , або || і можливо закінчується символом; або . З чотирьох зазначених операцій; і мають рівні пріоритети, менші, ніж у і ||. Пріоритети останніх є рівними між собою. символ; означає, що конвеєри будуть виконуватися послідовно, а - паралельно. операція (||) означає, що список, наступний за нею буде виконуватися лише в тому випадку, якщо код завершення попереднього конвеєра нульовий (ненульовий).

Команда - це або проста команда, або одна з керуючих конструкцій. Кодом завершення команди є код завершення її останньої простої команди.

3.1. цикл ДЛЯ

Якщо частина in <набор> опущена, то це означає in "[email protected]" (тобто in $ 1 $ 2. $ n). Приклад. Вивести на екран всі фортран файли поточної бібліотеки:

3.2. оператор вибору

Оператор вибору виконує <список>, що відповідає першому <шаблону>, якому задовольняє <переменная>. Форма шаблону та ж, що і використовувана для генерації імен файлів. частина | шаблон. може бути відсутнім.

Приклад. Визначити прапори і відкомпілювати всі вказані файли.

3.3. Умовний оператор.

виконується <список1> і, якщо код його завершення 0, то виконується <список2>, інакше - <список3> і, якщо і його код завершення 0, то виконується <список4>. Якщо ж це не так, то виконується <список5>. Частини elif і else можуть бути відсутні.

3.4. цикл ПОКИ

До тих пір, поки код завершення останньої команди <списка1> є 0, виконуються команди <списка2>. При заміні службового слова while на until умова виходу з циклу змінюється на протилежне.

В якості однієї з команд <списка1> може бути команда true (false). За цією командою не виконується ніяких дій, а код завершення встановлюється 0 (-1). Ці команди застосовуються для організації нескінченних циклів. Вихід з такого циклу можна здійснити лише за командою break (див. Спеціальні команди).

3.5. функції

Визначається функція з ім'ям <имя>. Тіло функції - <список>, укладений між <и>.

3.6. зарезервовані слова

Наступні слова є зарезервованими:

3.7. спеціальні команди

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

Порожня команда. Повертає нульовий код завершення.

Shell читає і виконує команди з файлу file, потім завершується; при пошуку file використовується список пошуку $ PATH.

Вихід з внутрішнього for або while циклу; якщо вказано n, то вихід з n внутрішніх процедур.

Перейти до наступної ітерації внутрішнього for або while циклу; якщо вказано n, то перехід до наступної ітерації n-ого циклу.

Змінити поточну директорію на директорію <аргумент>. За замовчуванням використовується значення HOME.

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

Аргументи читаються, як якби вони надходили зі стандартного вводу і розглядаються як команди, які тут же і виконуються.

Аргументи розглядаються як команди shell'а і тут же виконуються, але при цьому не створюється нового процесу. В якості аргументів можуть бути вказані напрямки вводу-виводу і, якщо немає ніяких інших аргументів, то буде змінено лише напрямок вводу-виводу поточної програми.

Завершення виконання shell'а з кодом завершення n. Якщо n опущено, то кодом завершення буде код завершення останньої виконаної команди (кінець файлу також призводить до завершення виконання).

Дані змінні відзначаються для автоматичного експорту в оточення (див. Оточення) виконуваних команд. Якщо не вказано жодних аргументів, то виводиться список всіх експортованих змінних. Імена функцій не можуть експортуватися.

hash [-r] [ <команда>. ]

Для кожної із зазначених команд визначається і запам'ятовується шлях пошуку. Опція -r видаляє всі успішної реєстрації дані. Якщо не вказано ні один аргумент, то виводиться інформація про запам'ятали командах: hits - кількість звернень shell'а до даної команді; cost - обсяг роботи для виявлення команди у списку пошуку; command - повне ім'я команди. У деяких ситуаціях відбувається переобчислення запам'ятали даних, що відзначається значком * в поле hits.

Виводить ім'я поточної директорії.

Читається зі стандартного вводу один рядок; перше її слово присвоюється першої змінної, друге - другий і т.д. причому всі залишилися слова присвоюються останньої змінної.

Забороняється зміна значень зазначених змінних. Якщо аргумент не вказано. то виводиться інформація про всі змінних типу readonly.

Вихід з функції з кодом завершення n. Якщо n опущено, то кодом завершення буде код завершення останньої виконаної команди.

set [--aefkntuvx [ <арг>. ]]

Команда встановлює наступні режими:

відзначити змінні, які були змінені або створені, як змінні оточення (див. Оточення)

якщо код завершення команди ненульовий, то негайно завершити виконання shell'а

Схожі статті