Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Функции оболочки

В настоящее время наш скрипт выполняет следующие шаги для создания HTML-документа:

1. Откройте страницу.

2. Откройте верхний колонтитул страницы.

3. Задайте заголовок страницы.

4. Закройте заголовок страницы.

5. Откройте тело страницы.

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

7. Отметка времени вывода.

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

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

На следующем этапе разработки мы добавим несколько задач между этапами 7 и 8. Они будут включать:

● Время безотказной работы и нагрузка системы. Это время, прошедшее с момента последнего выключения или перезагрузки, и среднее количество задач, выполняемых в данный момент на процессоре за несколько интервалов времени.

● Дисковое пространство. Общее использование пространства на запоминающих устройствах системы.

● Домашнее пространство. Объем дискового пространства, используемого каждым пользователем.


Если бы у нас была команда для каждой из этих задач, мы могли бы добавить их в наш скрипт просто путем подстановки команд:



#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


кошка << _EOF_

#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


кошка << _EOF_


$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_


Мы можем создать эти дополнительные команды двумя способами. Мы могли бы написать три отдельных скрипта и поместить их в каталог, указанный в нашей PATH, или мы могли бы встроить скрипты в нашу программу как функции оболочки. Как мы упоминали ранее, функции оболочки - это «мини-скрипты», которые находятся внутри других скриптов и могут действовать как автономные программы. Функции оболочки имеют две синтаксические формы. Во-первых, более формальная форма:

функция имя {

команды

возвращают

}

и более простая (и обычно предпочтительная) форма:

имя () {

команды

возвращают

}

изображение

#! / Bin / Баш

#! / Bin / Баш

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


function step2 {echo "Шаг 2" return

}

# Здесь начинается основная программа echo "Step 1"

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


function step2 {echo "Шаг 2" return

}

# Здесь начинается основная программа echo "Step 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 эхо "Шаг 3"

13 шаг2

14 эхо "Шаг 3"


Когда оболочка читает сценарий, она передает строки с 1 по 11, так как эти строки состоят из комментариев и определения функции. Выполнение начинается со строки 12, с эхо команда. Строка 13 звонки функция оболочки step2 и оболочка выполняет функцию так же, как и любую другую команду. Затем управление программой переходит к строке 6, а вторая эхо команда выполняется. Строка 7 выполняется следующей. Его возвращают завершает выполнение функции и возвращает управление программе в строке, следующей за вызовом функции (строка 14), а последняя эхо команда выполняется. Обратите внимание, что для того, чтобы вызовы функций распознавались как функции оболочки и не интерпретировались как имена внешних программ, определения функций оболочки должны появиться в сценарии до их вызова.

Мы добавим в наш скрипт минимальные определения функций оболочки:



#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


report_uptime () {return

}


report_disk_space () {return

}


report_home_space () {return

}


кошка << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


report_uptime () {return

}


report_disk_space () {return

}


report_home_space () {return

}


кошка << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)


_EOF_

_EOF_


Имена функций оболочки подчиняются тем же правилам, что и переменные. Функция должна содержать хотя бы одну команду. В возвращают команда (необязательная) удовлетворяет требованиям.


Лучшие облачные вычисления для ОС в OnWorks: