Спеціальні типи змінних

змінні, область видимості яких обмежена блоком коду або тілом функції (див. також локальні змінні у функціях)

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

У загальному контексті, кожен процес має деяке " оточення " (середу виконання), тобто. набір змінних, яких процес може звертатися за отриманням певної інформації. У цьому сенсі командна оболонка подібна до будь-якого іншого процесу.

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

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

(Дякую S. C. за вищенаведений приклад та пояснення.)

Якщо сценарій змінює змінні оточення, вони повинні " експортуватися " , тобто передаватися оточенню, локальному стосовно сценарію. Ця функція покладена команду export.

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

аргументи, що передаються скрипту з командного рядка - $0,$1, $2, $3. де $0 - це назва файлу сценарію, $1 - це перший аргумент, $2 - другий, $3 - третій і так далі. [1] Аргументи, що йдуть за $9, повинні полягати у фігурні дужки, наприклад: $, $, $.

Спеціальні змінні $* та $@ містять усі позиційні параметри (аргументи командного рядка).

Приклад 4-5. Позиційні параметри

У сценарії можна передбачити різні варіанти розвитку подій залежно від імені сценарію. Для цього сценарій повинен проаналізувати аргумент $0 – ім'я файлу сценарію. Це можуть бути і імена символічних посилань на сценарій.

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

Приклад 4-6. wh, whois з'ясування імені домену

Команда shift "зсуває" позиційні параметри, у результаті парметри "зсуваються" однією позицію вліво.

Колишній аргумент $1 втрачається, але аргумент $0 (ім'я файлу сценарію) залишається без змін. Якщо вашому сценарію передається велика кількість вхідних аргументів, команда shift дозволить вам отримати доступ до аргументів, з порядковим номером більше 9, без використання .

Приклад 4-7. Використання команди shift

Команда shift може застосовуватися до вхідних аргументів функцій. Приклад 33-10.

Примітки

Аргумент $0 встановлюється процесом, що викликає. Відповідно до угод, цей параметр містить ім'я файлу скрипта. Див. сторінки посібника для execv (man execv).