Переменные - аргументы

Один из наиболее часто используемых видов переменных - это переменные, которые вообще не нуждаются в объявлении. Эти переменные передаются скрипту в качестве аргументов командной строки при вызове скрипта. Например, если вы хотите запустить исполняемый скрипт ascript, то ему можно передавать аргументы при запуске из командной строки.
Листинг. Передача аргументов исполняемому скрипту при запуске из командной строки
leopard:- scott$ ascript argl arg2 arg3
Здесь значения аргументов argl, arg2 и агдЗ автоматически присваиваются переменным si, $2 и $з таким образом, чтобы они по мере необходимости использовались в скрипте.
Примечание
Во многих языках программирования отсчет начинается с нуля, а не с единицы. Аргументы командной строки не являются исключением из этого правила. В скриптах переменная $0 всегда представляет сам скрипт, и в ней возвращается полное имя пути к исполняемому скрипту.
Эти специальные переменные, впрочем, не обязательно должны передаваться через командную строку. В некоторых случаях более удобно создавать эти аргументы внутри скрипта и управлять ими оттуда же. Сделать это можно с помощью команды set. Команда set заменит любые аргументы, переданные из командной строки, вновь указанными значениями аргументов.
Примечание
Команда set представляет собой довольно сложную команду оболочки Bash с широким диапазоном возможностей. Если команду set запустить из командной строки, она выведет список всех переменных среды и доступных вам функций, причем этот список будет иметь очень удобный и интуитивно понятный формат. При использовании этой команды с аргументами она позволяет переключать большое количество разнообразных атрибутов оболочки. Кроме того, следует обратить внимание на то, что команда set по-разному ведет себя в разных оболочках. Например, в csh команда set используется вместо export для создания переменных среды.
Замена команд
Еще один способ присваивания значения переменной - это замена команд. Замена команд позволяет вам работать с результатами, возвращенными любой из команд оболочки, заключенной в обратные кавычки. Символ обратной кавычки на большинстве клавиатур Мае расположен под клавишей. Это позволяет воспользоваться любой командой, обходя множество из естественных ограничений оболочки. Например, оболочка Bourne не имеет встроенных возможностей для осуществления простых арифметических действий. Однако, воспользовавшись заменой команд, можно обойти это ограничение.
Листинг. Обход ограничений оболочки Bourne с помощью замены команд
!/bin/sh
х=2
у=3
z ехрг $х + $у" echo Sz
В скрипте из листинга 19.8 исполняемый файл ехрг используется для выполнения необходимых математических операций и вывода значения.
Примечание
Оболочка Bash в действительности имеет встроенные возможности по выполнению арифметических операций, так что при желании вы можете заменить строку z="expr $х + $у" строкой let г = $х+$у и получить точно такой же результат.