Семинар кодирование информации общие сведения
![]()
|
Переменные языка shell, массивы переменныхВ отличие от других языков программирования, в языке shell переменные не разделяются на типы (то есть не типизированы). Все переменные представляют собой литералы, то есть обыкновенные строки, которым присвоено имя. Это означает, что если значение переменной "85" – оно интерпретируется не как число, а как строка, состоящая из двух символов "8" и "5". Shell допускает целочисленную арифметику с переменными, но лишь в ограниченном числе команд. Физически переменные представляют собой участки памяти, в которую занесены коды символов в одной из кодировок. Принято выделять три типа переменных: позиционные параметры; специальные параметры; именованные переменные. Значения позиционных параметров устанавливаются из аргументов, указанных в командной строке при запуске программы. Для них зарезервированы имена в виде цифр. Значения позиционных параметров в программе можно получить используя ссылки на них при помощи символа $: $1, $2, … . Всего в командной строке могут быть указано не более 128 параметров, но ссылаться через ссылки можно лишь на 9 первых. Для работы с большим числом параметром используется команда shift, которая смещает указатель с первого параметра на заданное число позиций. На ряду с позиционными параметрами, интерпретатор shell при запуске сценария автоматически инициализирует следующие специальные параметры:
Для получения значений, записанных в специальные параметры, перед ними необходимо поставить символ $. Так чтобы использовать в команде значение, соответствующее числу аргументов, с которыми программа была вызвана, следует указывать $#. Отличием специальных переменных * и @ состоит в том, что первая переменная будет представлена как одна строка “arg1 arg2 arg3 …”, а вторая как набор строк “arg1” “arg2” “arg3” … . Именованные переменные – переменные созданные и инициализированные пользователем. Один из наиболее простых способов создания и присваивания именованной переменной значения имеет вид: Var_name=value Здесь Var_name – имя переменной, value – присвоенное ей значение. Пробелы перед и после знака = недопустимы. Для получения значения переменной, перед ее именем необходимо указать знак $. При попытке обратиться к неопределенной переменной интерпретатор не будет выдавать сообщение об ошибке. Значением любой неопреденной переменной является пустая строка. Названия переменных в языке shell могут состоять из букв, символов подчеркивания и цифр и не должны совпадать с именами команд языка shell. Первая буква имени может быть буквой или символом подчеркивания. В сценариях языка Shell нет понятия области видимости переменной. Любая переменная доступна в любой части кода (то есть является аналогом глобальной переменной языка Си, например). Даже если переменная была определена внутри некоторой функции, она будет определена и доступна и вне этой функции. В строгом варианте при обращении к переменным через ссылки их имена должны быть взяты в фигурные скобки ${Var_name}. Такую запись рекомендуется использовать тогда, когда имя переменной имеет сложную структуру и может возникнуть синтаксическая ошибка. В таблице 1.2 представлены различные способы присваивания переменным значений. Таблица 1.2 Некоторые способы присваивания переменным значений
В интерпретаторе Shell возможна работа с массивами. Существует 3 способа определения массивов: Mass_name[0]=value Mass_name=(value1 value2) # эквивалентно Mass_name[0]=value1 #Mass_name[1]=value2 Mass_name=([0]=value1 [3]=value2) Обращение к значениям элементам массива аналогично получению значения обычной переменной: ${Mass_name[0]} Для получения значений всех элементов массива используется запись вида ${Mass_name[*]} или ${Mass_name[@]}. |