Программирование на Shell (Unix)



СРЕДА SHELL (ПЕРЕМЕННЫЕ И ПАРАМЕТРЫ) - часть 11


/p>

При обращении к этим переменным (т.е при использовании их в командном файле - shell-программе) следует впереди ставить "$".

Пример. Вызов расчета

specific par1 par2 par3

имеющего вид

### # specific: Специальные параметры (переменные) echo $0 - имя расчета echo $? - код завершения echo $$ - идентификатор последнего процесса echo $! - идентификатор последнего фонового процесса echo echo $* - значения параметров, как строки echo $@ - значения параметров, как слов echo set -au echo $- - режимы работы интерпретатора

Выдаст на экран

specific - имя расчета 0 - код завершения 499 - идентификатор последнего процесса 98 - идентификатор последнего фонового процесса par1 par2 par3 - значения параметров, как строки par1 par2 par3 - значения параметров, как слов au - режимы работы интерпретатора

Код "0" соответствует нормальному завершению процесса.

Важную роль при создании уникальных файлов играет специальная переменная "$$", значение которой соответствует номеру процесса, выполняющего данный расчет. Каждый новый расчет, выполняемый компьютером, инициирует один или несколько процессов, автоматически получающих номера по порядку. Поэтому, используя номер процесса в качестве имени файла, можно быть уверенным, что каждый новый файл будет иметь новое имя (не запишется на место уже существующего). Достоинство является и главным недостатком такого способа именования файлов. Неизвестно, какие имена будут присвоены файлам. И, если в рамках данного процесса можно найти файл "не глядя", т.е., обратившись к нему, используя $$, то потом такие файлы можно легко потерять. Это создает дополнительные проблемы при отладке программ.

"echo" без параметров выводит пустую строку.

Различия $* и $@ состоит в том, что первая переменная может быть представлена как

"par1 par2 par3"

а вторая как

"par1" "par2" "par3"

Пример, иллюстрирующий различия "$*" и "$@" будет рассмотрен в связи с оператором "for".

Для иллюстрации мы установили командой "set" режимы интерпретатора ("a" - все последующие переменные экспортируются; "u" - отсутствие параметра считать ошибкой), что и отразилось в специальной переменной "$-".

[Назад] [Содержание] [Вперед]




Содержание  Назад  Вперед