Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Функції оболонки

На даний момент наш скрипт виконує такі кроки для створення HTML-документа:

1. Відкрийте сторінку.

2. Відкрийте верхній колонтитул сторінки.

3. Установіть назву сторінки.

4. Закрийте верхній колонтитул сторінки.

5. Відкрийте тіло сторінки.

6. Вивести заголовок сторінки.

7. Вивести мітку часу.

8. Закрийте тіло сторінки.

9. Закрийте сторінку.

Для нашого наступного етапу розробки ми додамо кілька завдань між кроками 7 і 8. Вони включатимуть:

● Час роботи та навантаження системи. Це проміжок часу з моменту останнього вимкнення або перезавантаження та середня кількість завдань, які в даний момент виконуються на процесорі за декілька інтервалів часу.

● Місце на диску. Загальне використання місця на пристроях зберігання системи.

● Домашній простір. Обсяг пам’яті, який використовує кожен користувач.


Якби у нас була команда для кожного з цих завдань, ми могли б додати їх до нашого сценарію просто за допомогою заміни команд:



#! / бін / баш


# Програма для виведення сторінки системної інформації


TITLE="Звіт про системну інформацію для $HOSTNAME" CURRENT_TIME=$(дата +"%x %r %Z")

TIMESTAMP="Створено $CURRENT_TIME, $USER"


кіт << _EOF_

#! / бін / баш


# Програма для виведення сторінки системної інформації


TITLE="Звіт про системну інформацію для $HOSTNAME" CURRENT_TIME=$(дата +"%x %r %Z")

TIMESTAMP="Створено $CURRENT_TIME, $USER"


кіт << _EOF_


$TITLE

$TITLE

$TIMESTAMP

$(час роботи звіту)

$(report_disk_space)

$(report_home_space)

_EOF_

$TITLE

$TITLE

$TIMESTAMP

$(час роботи звіту)

$(report_disk_space)

$(report_home_space)

_EOF_


Ці додаткові команди можна створити двома способами. Ми могли б написати три окремі сценарії та розмістити їх у каталозі, зазначеному в нашому PATH, або ми могли б вставити сценарії в нашу програму як функції оболонки. Як ми вже згадували раніше, функції оболонки — це «міні-скрипти», які розташовані всередині інших скриптів і можуть діяти як автономні програми. Функції оболонки мають дві синтаксичні форми. По-перше, більш формальна форма:

функція ім'я {

Команди

повертати

}

і простіша (і загалом бажана) форма:

ім'я () {

Команди

повертати

}

зображення

#! / бін / баш

#! / бін / баш

# Демонстрація функції оболонки


function step2 { echo "Крок 2" повернення

}

# Основна програма починається тут echo "Крок 1"

# Демонстрація функції оболонки


function step2 { echo "Крок 2" повернення

}

# Основна програма починається тут echo "Крок 1"

де ім'я це назва функції і Команди — це серія команд, що містяться у функції. Обидві форми є еквівалентними і можуть використовуватися як взаємозамінні. Нижче ми бачимо скрипт, який демонструє використання функції оболонки:


1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

Функції оболонки


13 крок 2

14 echo "Крок 3"

13 крок 2

14 echo "Крок 3"


Коли оболонка зчитує сценарій, вона проходить через рядки з 1 по 11, оскільки ці рядки складаються з коментарів і визначення функції. Виконання починається з рядка 12 з ан нудьгувати наказ. Рядок 13 дзвінки функція оболонки step2 і оболонка виконує функцію так само, як і будь-яку іншу команду. Програмне керування потім переходить до рядка 6 і другого нудьгувати виконується команда. Далі виконується рядок 7. Його повертати команда завершує роботу функції та повертає керування програмі в рядку, що слідує за викликом функції (рядок 14), і в кінцевому нудьгувати виконується команда. Зауважте, що для того, щоб виклики функцій розпізнавались як функції оболонки, а не інтерпретувалися як імена зовнішніх програм, визначення функцій оболонки повинні з’являтися в скрипті перед їх викликом.

Ми додамо мінімальні визначення функцій оболонки до нашого сценарію:



#! / бін / баш


# Програма для виведення сторінки системної інформації


TITLE="Звіт про системну інформацію для $HOSTNAME" CURRENT_TIME=$(дата +"%x %r %Z")

TIMESTAMP="Створено $CURRENT_TIME, $USER"


report_uptime () { повернення

}


report_disk_space () { повернення

}


report_home_space () { повернення

}


кіт << _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(час роботи звіту)

$(report_disk_space)

$(report_home_space)

#! / бін / баш


# Програма для виведення сторінки системної інформації


TITLE="Звіт про системну інформацію для $HOSTNAME" CURRENT_TIME=$(дата +"%x %r %Z")

TIMESTAMP="Створено $CURRENT_TIME, $USER"


report_uptime () { повернення

}


report_disk_space () { повернення

}


report_home_space () { повернення

}


кіт << _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(час роботи звіту)

$(report_disk_space)

$(report_home_space)


_EOF_

_EOF_


Назви функцій оболонки відповідають тим же правилам, що й змінні. Функція повинна містити принаймні одну команду. The повертати команда (яка є необов'язковою) задовольняє вимозі.


Найпопулярніші хмарні обчислення ОС на OnWorks: