Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_SRS.doc
Скачиваний:
5
Добавлен:
02.05.2019
Размер:
1.06 Mб
Скачать

3.4. Експорт змінних

У ОС UNIX існує поняття процесу. Процес виникає тоді, коли запускається на виконання яка-небудь команда (розрахунок).

Наприклад, при наборі на клавіатурі "р <Enter>" породжується процес розрахунку "р". У свою чергу "р" може породити інші процеси. Допустимо, що "р" викликає|спричиняє| розрахунки "р1" і "р2", які послідовно породжують відповідні процеси.

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

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

Приклад|зразок|.

Хай|нехай| розрахунок (командний файл) "p", що має вигляд|вид|:

# розрахунок p

echo Розрахунок p

varX=0 varY=1

echo varX=$varX varY=$varY

export varY

p1 # виклик розрахунку p1

p2 # виклик розрахунку p2

echo Знову розрахунок p: varX=$varX varY=$varY

викликає|спричиняє| командні файли "p1" і "p2", що мають вигляд|вид|:

# розрахунок p1

echo Розрахунок p1

echo varX=$varX varY=$varY

varX=a varY=b

echo varX=$varX varY=$varY

export varX

# розрахунок p2

echo Розрахунок p2

echo varX=$varX varY=$varY

varX=A varY=B

echo varX=$varX varY=$varY

export varY

На екран будуть видані наступна|слідуюча| інформація:

Розрахунок p

varX=0 varY=1

Розрахунок p1

varX= varY=1

varX=a varY=b

Розрахунок p2

varX= varY=1

varX=A varY=B

Знову розрахунок p: varX=0 varY=1

З|із| прикладу|зразка| видно|показно|, що значення змінних експортуються тільки|лише| в розрахунки, що викликаються|спричиняються| (і не передаються "вгору|угору|" і "убік"). Експортувати змінні можна і командою "set" з|із| прапором "-a".

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

3.5. Параметри

У командний файл можуть бути передані параметри. У shell використовуються позиційні параметри (тобто істотна|суттєва| черговість їх проходження|дотримання|). У командному файлі відповідні параметрам змінні (аналогічно shell-змінним) починаються з символу "$", а далі слідує|прямує| одна з цифр від 0 до 9:

Хай|нехай| розрахунок "examp-1" викликається|спричиняється| з|із| параметрами "cock" і "tail". Ці параметри потрапляють|попадають| в нове середовище|середу| під стандартними іменами "1" і "2". У (стандартної) змінній з|із| ім'ям "0" зберігатиметься ім'я викликаного|спричиненого| розрахунку.

При зверненні до параметрів перед цифрою ставиться символ долара "$" (як і при зверненні до змінних):

$0

відповідає імені даного командного файлу;

$1

перший по порядку параметр;

$2

другий параметр і т.д.

Хай|нехай| командний файл з|із| ім'ям "examp-1" має вигляд|вид|

echo Це розрахунок $0:

sort $2 >> $1

cat $1

а файли "cock" і "tail" містять|утримують| відповідно

cock:

Це відсортований файл:

tail:

1

3

2

Тоді після|потім| виклику команди

examp-1 cock tail

на екрані буде

Це розрахунок examp-1:

Це відсортований файл:

1

2

3

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

Розглянемо|розгледимо| її дію на прикладі|зразку|.

Хай|нехай| командний файл "many" викликається|спричиняється| з|із| 13-у параметрами

many 10 20 30 40 50 60 70 80 90 100 110 120 130

І має вигляд|вид|

###

# many: Передача великого числа параметрів.

echo "$0: Багато параметрів"

echo " Загальне|спільне| число параметрів = $#

Початковий|вихідний| стан: $1 $5 $9 "

shift

echo "1 зрушення|зсув|: первый=$1 пятый=$5 девятый=$9"

shift 2

echo "1 + 2 = 3 зрушення|зсуви|: первый=$1 пятый=$5 девятый=$9"

perem=`expr $1 + $2 + $3`

echo $perem

В результаті|унаслідок,внаслідок| першого застосування|вживання| команди "shift" другий параметр розрахунку викликається|спричиняється| як $1, третій параметр викликається|спричиняється| як $2, ... десятий|десятеро| параметр, який був початково|вихідний| недоступний, викликається|спричиняється| як $9. Але|та| став недоступним перший параметр!

Після|потім| виконання цього розрахунку на екрані буде:

many: Багато параметрів

Загальне|спільне| число параметрів = 13

Початковий|вихідний| стан: 10 50 90

1 зрушення|зсув|: первый=20 пятый=60 девятый=100

1 + 2 = 3 зрушення|зсув|: первый=40 пятый=80 девятый=120

150

Своєрідний підхід до параметрів дає команда "set".

Наприклад, фрагмент розрахунку

set а b з|із|

echo первый=$1 второй=$2 третий=$3

видасть на екран

первый=a второй=b третий=c

тобто команда "set" встановлює значення параметрів. Це буває дуже зручно. Наприклад, команда "date" видає на екран поточну дату, скажімо, "Mon May 01 12:15:10 2000", що складається з п'яти слів, тоді

set `date`

echo $1 $3 $5

видасть на екран

Mon 01 2000

Команда "set" дозволяє також здійснювати контроль виконання програми, наприклад:

set -v

на термінал виводяться рядки, що читаються shell.

Set +v

відміняє|скасовує| попередній режим.

Set -х

на термінал виводяться команди перед виконанням.

Set +x

відміняє|скасовує| попередній режим.

Команда "set" без параметрів виводить на термінал стан програмного середовища|середи| (см далі).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]