Для обозначения переменных Shell используется последовательность букв, цифр и символов подчеркивания; переменные не могут начинаться с цифры. Присваивание значений переменным проводится с использованием знака =, например, РS2 = '<'. Для обращения к значению переменной перед ее именем ставится знак $. Их можно разделить на следующие группы:
- позиционные переменные вида $n, где n - целое число;
- простые переменные, значения которых может задавать пользователь или они могут устанавливаться интерпретатором;
- специальные переменные #? -! $ устанавливаются интерпретатором и позволяют получить информацию о числе позиционных переменных, коде завершения последней команды, идентификационном номере текущего и фонового процессов, о текущих флагах интерпретатора Shell.
Простые переменные. Shell присваивает значения переменным:
z=1000
х= $z
есhо $х
Здесь переменной x присвоено значение z.
Позиционные переменные. Переменные вида $n, где n - целое число, используются для идентификации позиций элементов в командной строке с помощью номеров, начиная с нуля. Например, в командной строке
|
|
Саt text_1 text_2...text_9
аргументы идентифицируются параметрами $1...$9. Для имени команды всегда используется S0. В данном случае $0 - это саt, $1 - text_1, $2 - text_2 и т.д. Для присваивания значений позиционным переменным используется команда set, например:
Set arg_1 arg_2... arg_9
здесь $1 присваивается значение аргумента arg_1, $2 - arg_2 и т.д.
Для доступа к аргументам используется команда echo, например:
echo $1 $2 $9
arg_1 arg_2 arg_9
Для получения информации обо всех аргументах (включая последний) используют метасимвол *. Пример:
echo $*
arg_2 arg_3... arg_10 arg_11 arg_12
С помощью позиционных переменных Shell можно сохранить имя команды и ее аргументы. При выполнении команды интерпретатор Shell должен передать ей аргументы, порядок которых может регулироваться также с помощью позиционных переменных.
Специальные переменные. Переменные -? # $! устанавливаются только Shell. Они позволяют с помощью команды echo получить следующую информацию:
- – текущие флаги интерпретатора (установка флагов может быть изменена командой set);
# – число аргументов, которое было сохранено интерпретатором при выполнении какой-либо команды;
? – код возврата последней выполняемой команды;
$ – числовой идентификатор текущего процесса PID;
! – PID последнего фонового процесса.