Операционная система UNIX. Руководство пользователя

       

Позиционные параметры


Позиционные параметры являются переменными в shell программе. Их значение устанавливается из аргументов, указанных в командной строке, которая вызывает программу. Позиционные параметры нумеруются и на них ссылка идет с помощью символа $: $1, $2, $3 и т.д.

shell программа может использовать до 9 позиционных параметров. Если shell программа вызывается с помощью командной строки, подобной следующей:

shell.prog pp1 pp2 pp3 pp4 pp5 pp6 pp7 pp8 pp9 <CR>

то позиционному параметру $1 в программе присваивается значение pp1, $2 - значение pp2 и т.д. во время вызова программы. Чтобы практически рассмотреть это замещение позиционных параметров, создайте файл pp. Затем введите команды echo в файл pp. В результате выполнения команды cat получим следующий вывод:

$ cat pp<CR>

echo The first positional parameter is: $1<CR>

echo The second positional parameter is: $2<CR>

echo The third positional parameter is: $3<CR>

echo The fourth positional parameter is: $4<CR>

$

Если вы выполните эту shell программу с аргументами one, two, three, four, то получите результат (но вначале нужно сделать shell программу pp исполняемой с помощью команды chmod):

$ chmod u+x pp<CR>

$ $ pp one two three four<CR>

echo The first positional parameter is: one echo The second positional parameter is: two echo The third positional parameter is: three echo The fourth positional parameter is: four $

Команда who перечисляет всех пользователей, в данный момент зарегистрированных в системе. Можем создать простую программу whoson, которая будет сообщать, работает ли в настоящий момент конкретный пользователь. Введем в файл whoson командную строку:

who | grep $1<CR>

Команда who перечисляет всех текущих пользователей системы, а команда grep осуществляет поиск строки, содержащей значение, соответствующее позиционному параметру $1. Теперь подставим конкретное имя в качестве аргумента в файле whoson, например, sue. Когда вы зададите команду "whoson sue", shell программа заменит $1 на sue в вашей программе и выполнит ее в следующем виде:

who | grep sue<CR>

Вывод будет следующим:

$ whoson sue<CR>

sue tty26 Jan 24 13:35 $

Если указанный пользователь sue не зарегистрирован в данный момент в системе, grep завершится неудачно и whoson не будет ничего выводить на экран.

shell позволяет указывать в командной строке до 128 аргументов, но ссылаться можно не более, чем на 9 позиционных параметров. В следующем пункте описан специальный параметр $*.



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