Служебные переменные языка 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)