Поиск по сайту:
Быть добрым совсем не трудно, трудно быть справедливым (В. Гюго).

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

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

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

 

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

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

  • Использование цикла
  • Использование команды grep
  • Использование синтаксиса ${array[@]/pattern/replacement}

 

Способ 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:-$

 

Читать  POP! _OS против Linux Mint

Способ 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 и выполнять необходимые операции над найденными значениями.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Хотя TikTok заслуживает похвалы, важно помнить, что Google по-прежнему прочно…

Спасибо!

Теперь редакторы в курсе.