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

Как проверить, содержит ли массив значение в Bash

Как проверить, содержит ли массив значение в Bash

Bash — это широко используемая оболочка Unix, предоставляющая набор мощных инструментов для системного администрирования и автоматизации. Одной из наиболее часто используемых программных структур в сценариях Bash является массив, который позволяет хранить несколько значений в одной переменной. В этой статье мы обсудим, как проверить, содержит ли массив в Bash определенное значение.

 

Как проверить, содержит ли массив Bash значение

Вот три различных метода, которые вы можете использовать, чтобы определить, содержит ли массив в Bash значение:

 

Способ 1: использование цикла

Один из способов проверить, содержит ли массив Bash значение, — перебрать массив с помощью цикла for, который сравнивает каждый элемент со значением, которое вы хотите найти, вот пример:

#!/bin/bash
cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"

for car in "${cars[@]}"
do
  if [ "$car" == "$car_to_find" ]
  then
    echo "Found $car!"
    break
  fi
done

 

Здесь у нас есть массив марок автомобилей, и мы хотим найти марку «KIA», поэтому я перебираю массив с помощью цикла for и сравниваем каждую марку автомобиля с маркой, которую хочу найти. Если мы находим совпадение, мы печатаем сообщение и выходим из цикла, используя оператор break.

andreyex@destroyer:-$ bash bashfile.sh 

Found KIA!

andreyex@destroyer:-$

 

Способ 2: использование команды grep

Использование команды grep для поиска значения в массиве — еще один способ определить, имеет ли массив Bash значение, вот иллюстрация:

#!/bin/bash

cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"

if echo "${cars[@]}" | grep -qw "$car_to_find"; then
  echo "Found $car_to_find!"
else
  echo "$car_to_find not found."
fi

 

Здесь мы использовали команду echo для вывода массива на стандартный вывод и передачи его в grep. Параметр -q указывает grep быть тихим и возвращать только код состояния, указывающий, был ли найден шаблон или нет. Опция -w сообщает grep, что нужно сопоставить шаблон как целое слово. Если grep находит шаблон, оператор if выводит сообщение о том, что значение найдено.

andreyex@destroyer:-$ bash bashfile.sh 

Found KIA!

andreyex@destroyer:-$

 

Способ 3: использование синтаксиса ${array[@]/pattern/replacement}

Третий способ проверить, содержит ли массив Bash значение, — использовать синтаксис ${array[@]/pattern/replacement} для замены значения, которое вы хотите найти, другой строкой, а затем сравнить полученный массив с исходным. множество. Вот пример:

#!/bin/bash
cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"
if [[ "${cars[@]/$car_to_find/}" != "${cars[@]}" ]]; then
  echo "Found $car_to_find!"
else
  echo "$car_to_find not found."
fi

 

Здесь мы используем синтаксис ${array[@]/pattern/replacement}, чтобы удалить значение, которое мы хотим найти, из массива, и если результирующий массив отличается от исходного массива, это означает, что значение было найдено.

andreyex@destroyer:-$ bash bashfile.sh 

Found KIA!

andreyex@destroyer:-$

 

Заключение

Мы обсудили три разных метода проверки того, содержит ли массив Bash значение: использование цикла, использование команды grep и использование синтаксиса ${array[@]/pattern/replacement}. Используя эти методы, вы можете эффективно искать в массивах Bash и выполнять необходимые операции над найденными значениями.

Exit mobile version