Позиционные параметры являются переменными в shell программе. Их значение устанавливается из аргументов, указанных в командной строке, которая вызывает программу. Позиционные параметры нумеруются, и на них идет ссылка символами $: $1, $2, $3 и т.д. Shell программа может использовать до 9 позиционных параметров. Если shell программа вызывается с помощью командной строки наподобие:
shell.prog pp1 pp2 pp3 pp4 pp5 pp6 pp7 pp8 pp9 <ENTER>
то позиционному параметру $1 в программе присваивается значение pp1, $2 - значение pp2 и т.д. во время вызова программы. Чтобы практически рассмотреть это замещение позиционных параметров сделайте следующее. Команда who перечисляет всех пользователей, в данный момент зарегистрированных в системе. Можем создать простую программу whoson, которая будет сообщать, работает ли в настоящий момент конкретный пользователь. Введем в файл whoson командную строку: who | grep $1 < ENTER >
Команда who перечисляет всех текущих пользователей системы, а команда grep осуществляет поиск строки, содержащей значение, соответствующее позиционному параметру $1. Теперь подставим конкретное имя в качестве аргумента в файле whoson, например, user1.
Если указанный пользователь user1 не зарегистрирован в данный момент в системе, grep завершится неудачно и whoson не будет ничего выводить на экран.
Специальные параметры
Наиболее важный из них: $?
Большинство команд shell возвращает коды, которые указывают, успешно ли завершилась команда. Если возвращаемое значение 0 (ноль), то команда выполнилась успешно. Коды возврата не печатаются автоматически, но их можно получить как значение этого параметра.
Именованные переменные
Переменная – это область данных, обладающая именем и содержимым. Имя может состоять только из букв и цифр и не может начинаться с цифры. Содержимое – любой текст. Значение именованной переменной вы присваиваете сами следующим образом:
name_variable=value<ENTER>
Обратите внимание, что ни слева, ни справа от знака равенства нет пробелов.
В следующем примере var1 - это имя переменной, а myname - значение строки символов, которое присваивается переменной:
Пример
var1=myname<ENTER>
Знак $ используется перед именем переменной в shell программе для ссылки на значение этой переменной. Если взять предыдущий пример, то ссылка $var1 говорит shell, что нужно заменить любую встретившуюся строку символов $var1 на значение myname.
Переменные могут хранить целые команды:
ls2=’ls –l’
$ ls2
Значение этих переменных вы можете определить двумя способами. Первый, вы можете ввести: echo $variable_name
Система распечатает значение переменной variable_name. Второй способ: вы можете воспользоваться командой env для распечатки значений всех определенных переменных в shell. Для этого введите команду env и система выдаст список всех имен переменных и их значения.