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

Логотип

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

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

Переменные и константы

Однако есть проблема с нашим скриптом. Обратите внимание, как повторяется строка «Системный информационный отчет»? С нашим крошечным скриптом это не проблема, но давайте представим, что наш скрипт был очень длинным и у нас было несколько экземпляров этой строки. Если бы мы хотели изменить заголовок на что-то другое, нам пришлось бы изменить его в нескольких местах, что может потребовать много работы. Что, если бы мы могли расположить сценарий так, чтобы строка появлялась только один раз, а не несколько раз? Это значительно упростило бы дальнейшее обслуживание сценария. Вот как мы могли это сделать:



#! / Bin / Баш


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


title = "Отчет о системной информации"


эхо "

$ title

$ title

"

#! / Bin / Баш


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


title = "Отчет о системной информации"


эхо "

$ title

$ title

"


Создавая переменная названный название и присвоив ему значение «Системный информационный отчет», мы можем воспользоваться расширением параметров и разместить строку в нескольких местах.

Итак, как нам создать переменную? Все просто, мы просто используем это. Когда оболочка встречает переменную, она автоматически создает ее. Это отличается от многих языков программирования, в которых переменные должны быть явно объявленный или определено перед использованием. Оболочка очень небрежно относится к этому, что может привести к некоторым проблемам. Например, рассмотрим этот сценарий, разыгрываемый в командной строке:


[я @ linuxbox ~] $ foo = "да" [я @ linuxbox ~] $ эхо $ foo Да

[я @ linuxbox ~] $ эхо $ дурак


[я @ linuxbox ~] $

[я @ linuxbox ~] $ foo = "да" [я @ linuxbox ~] $ эхо $ foo Да

[я @ linuxbox ~] $ эхо $ дурак


[я @ linuxbox ~] $


Сначала мы присваиваем переменной значение «да». Foo, а затем отобразить его значение с помощью эхо. Затем мы отображаем значение имени переменной, написанное с ошибкой как «дурак», и получаем пустой результат. Это потому, что оболочка успешно создала переменную дурачить когда он встретил его, и дал ему значение по умолчанию ничего или пустое. Из этого мы узнаем, что мы должны уделять пристальное внимание орфографии! Также важно понять, что на самом деле произошло в этом примере. Из нашего предыдущего взгляда на то, как оболочка выполняет расширения, мы знаем, что команда:



[я @ linuxbox ~] $ echo $ foo

[я @ linuxbox ~] $ echo $ foo


подвергается расширению параметров и приводит к:



[me @ linuxbox ~] $ echo да

[me @ linuxbox ~] $ echo да


Тогда как команда:



[я @ linuxbox ~] $ echo $ дурак

[я @ linuxbox ~] $ echo $ дурак


расширяется до:



[я @ linuxbox ~] $ echo

[я @ linuxbox ~] $ echo


Пустая переменная превращается в ничто! Это может нанести ущерб командам, требующим аргументов. Вот пример:



[я @ linuxbox ~] $ foo = foo.txt [я @ linuxbox ~] $ foo1 = foo1.txt [я @ linuxbox ~] $ cp $ foo $ дурак

cp: отсутствует операнд конечного файла после `foo.txt '

[я @ linuxbox ~] $ foo = foo.txt [я @ linuxbox ~] $ foo1 = foo1.txt [я @ linuxbox ~] $ cp $ foo $ дурак

cp: отсутствует операнд конечного файла после `foo.txt '


Для получения дополнительной информации попробуйте `cp --help '.

Для получения дополнительной информации попробуйте `cp --help '.


Мы присваиваем значения двум переменным, Foo и foo1. Затем мы выполняем cp, но неправильно написали имя второго аргумента. После расширения cp Команда отправляет только один аргумент, хотя для этого требуется два.

Есть несколько правил об именах переменных:

1. Имена переменных могут состоять из буквенно-цифровых символов (букв и цифр) и символов подчеркивания.

2. Первый символ имени переменной должен быть буквой или знаком подчеркивания.

3. Использование пробелов и знаков препинания не допускается.

Слово «переменная» подразумевает изменяющееся значение, и во многих приложениях переменные используются таким образом. Однако переменная в нашем приложении, название, используется как постоянная. Константа похожа на переменную в том смысле, что у нее есть имя и значение. Разница в том, что значение константы не меняется. В приложении, которое выполняет геометрические вычисления, мы могли бы определить PI как константа, и присвоить ей значение 3.1415вместо того, чтобы использовать число буквально во всей программе. Оболочка не делает различий между переменными и константами; они в основном предназначены для удобства программиста. Распространенным соглашением является использование прописных букв для обозначения констант и строчных букв для истинных переменных. Мы изменим наш скрипт в соответствии с этим соглашением:



#! / Bin / Баш

# Программа для вывода страницы с системной информацией TITLE= "Системный информационный отчет Для $ HOSTNAME"эхо"

$TITLE

$TITLE

"

#! / Bin / Баш

# Программа для вывода страницы с системной информацией TITLE= "Системный информационный отчет Для $ HOSTNAME"эхо"

$TITLE

$TITLE

"


Мы также воспользовались возможностью, чтобы оживить наш заголовок, добавив значение переменной оболочки

HOSTNAME. Это сетевое имя машины.


изображение

Внимание: Оболочка на самом деле предоставляет способ обеспечить неизменность констант с помощью объявлять встроенная команда с -r (только для чтения) вариант. Если бы мы назначили TITLE сюда:


declare -r TITLE = "Заголовок страницы"


оболочка предотвратит любое последующее присвоение TITLE. Эта функция используется редко, но существует для очень формальных сценариев.


изображение


 

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