ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как найти длину массива в Bash

Как найти длину массива в Bash

Bash поддерживает как числовые, так и ассоциативные массивы. Общее количество элементов этих типов массивов может быть вычислено несколькими способами в Bash. Длину массива можно подсчитать с помощью символа «#» или цикла, или с помощью команды типа «wc» или «grep». В этой статье показаны различные способы подсчета длины массива в Bash.

 

Найдите длину массива, используя «#»

Использование символа «#» — самый простой способ вычислить длину массива. В этой части статьи показаны способы подсчета общего количества элементов числового и ассоциативного массива.

 

Пример 1. Подсчет длины числового массива с использованием «#»

Создайте файл Bash со следующим сценарием, который подсчитывает и печатает длину числового массива, используя символ «#». Здесь используются символы «@» и «*» для обозначения всех элементов массива.

#Объявите числовой массив
items=("Shirt" "T-Shirt" "Pant" "Panjabi" "Shoe")
#Подсчитайте длину массива с помощью '#'
echo "Длина массива с использованием '#' с '@':  ${#items[@]}"
echo "Длина массива с использованием '#' с '*':  ${#items[*]}"

 

Следующий вывод появляется после выполнения скрипта. Массив содержит пять строковых значений, и для символов «@» и «*» отображается один и тот же результат :

andreyex@andreyex: -$ bash arraylen1.bash 
Длина массива с использованием '#' с '@': 5 
Длина массива с использованием # с 5 
andreyex@andreyex: -$

 

Пример 2. Подсчет длины ассоциативного массива с использованием «#»

Создайте файл Bash со следующим сценарием, который подсчитывает и печатает длину ассоциативного массива, используя символ «#». Здесь используются символы «@» и «*» для обозначения всех элементов массива.

#Объявляем ассоциативный массив
declare -A items=([6745]="Shirt (M)" [2345]="Shirt (L)" [4566]="Pant (36)")
#Подсчитайте длину массива с помощью '#'
echo "Длина ассоциативного массива с использованием '#' с '@':  ${#items[@]}"
echo "Длина ассоциативного массива с использованием '#' с '*':  ${#items[*]}"

 

Следующий вывод появляется после выполнения скрипта. Массив содержит три строковых значения, и для символов «@» и «*» отображается один и тот же результат :

andreyex@andreyex:-$ bash arraylen2.bash 
Длина ассоциативного массива с использованием '#" с '@': 3 
Длина ассоциативного массива с использованием '#* с ***: 3 
andreyex@andreyex: -$

 

Найдите длину массива с помощью цикла

Использование цикла — еще один способ подсчета общего количества элементов в массиве. Длина массива подсчитывается с помощью цикла while в следующем примере:

 

Пример. Подсчет длины массива с использованием цикла

Создайте файл Bash со следующим сценарием, который подсчитывает общее количество элементов с помощью цикла «пока». Числовой массив из четырех строковых значений объявляется в скрипте с помощью команды «объявить». Цикл for используется для повторения и печати значений массива. Здесь переменная $counter используется для подсчета длины массива, который увеличивается на каждой итерации цикла.

#Объявить массив
declare -a items=("Shirt(M)" "Shirt(L)" "Panjabi(42)" "Pant(38)")
echo "Значения массива являются:"
#Подсчитайте длину массива с помощью цикла
counter=0
#Выполните итерацию значений массива
for val in ${items[@]}
do
  #Print the array value
     echo $val
     ((counter++))
  done
  echo "Длина массива с использованием цикла $counter."
Следующий вывод появляется после выполнения скрипта. Значения массива и длина массива печатаются в выводе:
andreyex@andreyex:-$ bash arraylen3.bash
Значения массива являются:
Shirt(M)
Shirt(L)
Panjabi(42)
Pant(38)
The Длина массива с использованием цикла 4.
andreyex@andreyex: -$

Найдите длину массива с помощью команды «Wc»

Длину массива можно посчитать с помощью некоторых команд. Команда wc — одна из них. Но эта команда не возвращает правильный вывод, если массив содержит строковое значение из нескольких слов. В следующем примере показан метод подсчета общего количества элементов массива и сравнения значения длины массива, подсчитываемого символом «#» и командой wc.

 

Пример: подсчет длины массива с помощью команды «Wc»

Создайте файл Bash со следующим сценарием, который подсчитывает общее количество элементов с помощью команды «wc». В скрипте объявлен числовой массив из пяти строковых значений. Команда «wc» с параметром -w используется для подсчета длины двух массивов по 5 элементов. Один массив содержит строку из одного слова, а другой массив содержит строку из двух слов. Длина вторых массивов подсчитывается с помощью символа «#» и команды «wc ».

#Объявите числовой массив из одного слова строки
items=("Shirt" "T-Shirt" "Pant" "Panjabi" "Shoe")
echo "Значения массива: ${items[@]}"
#Подсчитайте длину массива с помощью 'wc'
len=`echo ${items[@]} | wc -w`
echo "Длина массива с использованием команды 'wc': $len"
#Объявите числовой массив из нескольких слов строки
items2=("Shirt (XL)" "T-Shirt (L)" "Pant (34)" "Panjabi (38)" "Shoe (9)")
echo "Array values: ${items2[@]}"
echo "Длина массива с использованием '#': ${#items2[@]}"
#Подсчитайте длину массива с помощью 'wc'
len=`echo ${items2[@]} | wc -w`
echo "Длина массива с использованием команды 'wc': $len"

 

Следующий вывод появляется после выполнения скрипта. Судя по выводу, команда «wc» выдает неверный вывод для массива, содержащего строковое значение из двух слов:

andreyex@andreyex:-$ bash arraylen4.bash
Значения массива: Shirt T-Shirt Pant Panjabi Shoe
Длина массива с использованием команды 'wc": 5
Значения массива: Shirt (XL) T-Shirt (L) Pant (34) Panjabi (38) Shoe (9)
Длина массива с использованием '#': 5
Длина массива с использованием команды 'wc': 10
andreyex@andreyex: -$

 

Заключение

В этой статье показаны методы подсчета длины массива с помощью символа «#», цикла и команды «wc ».

Exit mobile version