Главная страница
Навигация по странице:

  • Некоторые способы присваивания переменным значений

  • Выражение Интерпретация

  • Семинар кодирование информации общие сведения


    Скачать 63.47 Kb.
    НазваниеСеминар кодирование информации общие сведения
    Дата06.11.2019
    Размер63.47 Kb.
    Формат файлаdocx
    Имя файлаSeminary_3_4_2019 (1).docx
    ТипСеминар
    #93844
    страница5 из 6
    1   2   3   4   5   6

    Переменные языка shell, массивы переменных


    В отличие от других языков программирования, в языке shell переменные не разделяются на типы (то есть не типизированы). Все переменные представляют собой литералы, то есть обыкновенные строки, которым присвоено имя. Это означает, что если значение переменной "85" – оно интерпретируется не как число, а как строка, состоящая из двух символов "8" и "5". Shell допускает целочисленную арифметику с переменными, но лишь в ограниченном числе команд. Физически переменные представляют собой участки памяти, в которую занесены коды символов в одной из кодировок.

    Принято выделять три типа переменных:

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

    • специальные параметры;

    • именованные переменные.

    Значения позиционных параметров устанавливаются из аргументов, указанных в командной строке при запуске программы. Для них зарезервированы имена в виде цифр. Значения позиционных параметров в программе можно получить используя ссылки на них при помощи символа $: $1, $2, … . Всего в командной строке могут быть указано не более 128 параметров, но ссылаться через ссылки можно лишь на 9 первых. Для работы с большим числом параметром используется команда shift, которая смещает указатель с первого параметра на заданное число позиций.

    На ряду с позиционными параметрами, интерпретатор shell при запуске сценария автоматически инициализирует следующие специальные параметры:

    ?

    – значение, возвращаемое последней командой;

    $

    – номер процесса;

    !

    номер фонового процесса;

    #

    – число позиционных параметров, переданных программе;

    *

    – перечень позиционных параметров, представленных как одна строка;

    @

    – перечень позиционных параметров, представленных как последовательность слов;

    -

    – флаги, передаваемые в shell;

    Для получения значений, записанных в специальные параметры, перед ними необходимо поставить символ $. Так чтобы использовать в команде значение, соответствующее числу аргументов, с которыми программа была вызвана, следует указывать $#.

    Отличием специальных переменных * и @ состоит в том, что первая переменная будет представлена как одна строка

    arg1 arg2 arg3 …”,

    а вторая как набор строк

    arg1” “arg2” “arg3” … .

    Именованные переменные – переменные созданные и инициализированные пользователем. Один из наиболее простых способов создания и присваивания именованной переменной значения имеет вид:

    Var_name=value

    Здесь Var_name – имя переменной, value – присвоенное ей значение. Пробелы перед и после знака = недопустимы.

    Для получения значения переменной, перед ее именем необходимо указать знак $. При попытке обратиться к неопределенной переменной интерпретатор не будет выдавать сообщение об ошибке. Значением любой неопреденной переменной является пустая строка.

    Названия переменных в языке shell могут состоять из букв, символов подчеркивания и цифр и не должны совпадать с именами команд языка shell. Первая буква имени может быть буквой или символом подчеркивания.

    В сценариях языка Shell нет понятия области видимости переменной. Любая переменная доступна в любой части кода (то есть является аналогом глобальной переменной языка Си, например). Даже если переменная была определена внутри некоторой функции, она будет определена и доступна и вне этой функции.

    В строгом варианте при обращении к переменным через ссылки их имена должны быть взяты в фигурные скобки ${Var_name}. Такую запись рекомендуется использовать тогда, когда имя переменной имеет сложную структуру и может возникнуть синтаксическая ошибка.

    В таблице 1.2 представлены различные способы присваивания переменным значений.
    Таблица 1.2

    Некоторые способы присваивания переменным значений

    Выражение

    Интерпретация

    Var_name=value

    Значение value присваивается переменной Var_name

    Var_name+value

    Значение value присваивается переменной Var_name, если оно установлено

    Var_name:?value

    Если переменная Var_name не установлена, на экран выводится сообщение об ошибке

    Var_name?value

    Если переменная Var_name не установлена, на экран выводится сообщение о системной ошибке

    Var_name:=value

    Если переменная Var_name не установлена, ей присваивается значение value

    Var_name:-value

    Аналогично предыдущему варианту, но значение переменной Var_name не присваивается; оно может быть получено подстановкой


    В интерпретаторе 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[@]}.

      1. 1   2   3   4   5   6


    написать администратору сайта