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

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

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

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

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

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

#Объявите числовой массив

items=("Shirt" "T-Shirt" "Pant" "Panjabi" "Shoe")

#Подсчитайте длину массива с помощью '#'

echo "Длина массива с использованием '#' с '@':  ${#items[@]}"

echo "Длина массива с использованием '#' с '*':  ${#items[*]}"

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

srvadmin@vhost: -$ bash arraylen1.bash 

Длина массива с использованием '#' с '@': 5 

Длина массива с использованием # с 5 

srvadmin@vhost: -$

 

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

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

#Объявляем ассоциативный массив

declare -A items=([6745]="Shirt (M)" [2345]="Shirt (L)" [4566]="Pant (36)")

#Подсчитайте длину массива с помощью '#'

echo "Длина ассоциативного массива с использованием '#' с '@':  ${#items[@]}"

echo "Длина ассоциативного массива с использованием '#' с '*':  ${#items[*]}"

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

srvadmin@vhost:-$ bash arraylen2.bash 

Длина ассоциативного массива с использованием '#" с '@': 3 

Длина ассоциативного массива с использованием '#* с ***: 3 

srvadmin@vhost: -$

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

Использование цикла — еще один способ подсчета общего количества элементов в массиве. Длина массива подсчитывается с помощью цикла 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."
Следующий вывод появляется после выполнения скрипта. Значения массива и длина массива печатаются в выводе:
srvadmin@vhost:-$ bash arraylen3.bash

Значения массива являются:

Shirt(M)

Shirt(L)

Panjabi(42)

Pant(38)

The Длина массива с использованием цикла 4.

srvadmin@vhost: -$

 

Найдите длину массива с помощью команды «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» выдает неверный вывод для массива, содержащего строковое значение из двух слов:

srvadmin@vhost:-$ 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

srvadmin@vhost: -$

 

Заключение

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

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *