В этой главе мы обсудим, как использовать массивы оболочки в Unix. Переменная оболочки достаточно способна содержать одно значение. Эти переменные называются скалярными переменными.
Оболочка поддерживает другой тип переменной, называемый переменной массива . Это может содержать несколько значений одновременно. Массивы предоставляют метод группировки набора переменных. Вместо создания нового имени для каждой необходимой переменной вы можете использовать одну переменную массива, в которой хранятся все остальные переменные.
Все правила именования, обсуждаемые для переменных оболочки, будут применимы при именовании массивов.
Определение значений массива
Разницу между переменной массива и скалярной переменной можно объяснить следующим образом.
Предположим, вы пытаетесь представить имена разных учеников в виде набора переменных. Каждая из отдельных переменных является скалярной переменной следующим образом:
NAME01="Zara" NAME02="Qadir" NAME03="Mahnaz" NAME04="Ayan" NAME05="Daisy"
Мы можем использовать один массив для хранения всех вышеупомянутых имен. Ниже приведен самый простой способ создания переменной массива. Это помогает присвоить значение одному из его индексов.
array_name[index]=value
Здесь array_name — это имя массива, index — это индекс элемента в массиве, который вы хотите установить, а value — это значение, которое вы хотите установить для этого элемента.
Как пример, следующие команды —
NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy"
Если вы используете оболочку ksh , вот синтаксис инициализации массива —
set -A array_name value1 value2 ... valuen
Если вы используете оболочку bash , вот синтаксис инициализации массива —
array_name=(value1 ... valuen)
Доступ к значениям массива
После того, как вы установили любую переменную массива, вы получаете доступ к ней следующим образом —
${array_name[index]}
Здесь array_name — это имя массива, а index — это индекс значения, к которому необходимо получить доступ. Ниже приведен пример, чтобы понять концепцию —
#!/bin/sh NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}"
Приведенный выше пример сгенерирует следующий результат —
$./test.sh First Index: Zara Second Index: Qadir
Вы можете получить доступ ко всем элементам в массиве одним из следующих способов —
${array_name[*]} ${array_name[@]}
Здесь array_name — имя интересующего вас массива. Следующий пример поможет вам понять концепцию —
#!/bin/sh NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Method: ${NAME[*]}" echo "Second Method: ${NAME[@]}"
Приведенный выше пример сгенерирует следующий результат —