Программирование в стандарте POSIX

       

Служебные переменные языка shell


Значения некоторых переменных устанавливаются самим языком shell. Перечислим эти переменные и опишем их предназначение.

#

Количество фактических аргументов (десятичное).

-

Флаги (однобуквенные опции), указанные при запуске shell или установленные посредством команды set (см. далее).

?

Десятичное значение, возвращенное предыдущей синхронно выполненной командой.

$

Идентификатор процесса, в рамках которого выполняется shell.

!

Идентификатор последнего асинхронно запущенного процесса.

*, @

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

Напомним: чтобы получить значения этих переменных, перед ними нужно поставить знак $.

Значения $@ и $* имеют некоторые тонкие различия, на которых мы, однако, останавливаться не будем.

Несколько усложним процедуру three_args, чтобы продемонстрировать только что описанные возможности (см. листинг 2.15).

echo Идентификатор текущего процесса: $$ echo Имя команды: $0 echo Число фактических аргументов: $# echo Совокупность всех аргументов: $@ echo Значение первого аргумента: $1 echo Значение второго аргумента: $2 echo Значение третьего аргумента: $3

Листинг 2.15. Усовершенствованная shell-процедура three_args. (html, txt)

Теперь, вызывая усовершенствованную процедуру three_args, выполним командную строку

three_args arg1 . - arg4

Тогда на экране появится примерно следующее (см. листинг 2.16):

Идентификатор текущего процесса: 3882 Имя команды: three_args Число фактических аргументов: 4 Совокупность всех аргументов: arg1 . - arg4 Значение первого аргумента: arg1 Значение второго аргумента: . Значение третьего аргумента: -

Листинг 2.16. Результат вызова усовершенствованной процедуры three_args. (html, txt)



Содержание раздела