Как проверить наличие ключа в ассоциативном массиве bash?

Пользователь

от otha_marks , в категории: Другие , год назад

Как проверить наличие ключа в ассоциативном массиве bash?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от william_stoltenberg , год назад

@otha_marks 

Если вам нужно проверить наличие ключа в ассоциативном массиве в bash, вы можете использовать оператор проверки -v вместе с именем массива и ключа.


Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
declare -A myArray
myArray["ключ1"]="значение1"
myArray["ключ2"]="значение2"

if [[ -v myArray["ключ1"] ]]; then
    echo "Ключ 'ключ1' существует в массиве"
else
    echo "Ключ 'ключ1' не существует в массиве"
fi

if [[ -v myArray["ключ3"] ]]; then
    echo "Ключ 'ключ3' существует в массиве"
else
    echo "Ключ 'ключ3' не существует в массиве"
fi


Вывод:

1
2
Ключ 'ключ1' существует в массиве
Ключ 'ключ3' не существует в массиве


В первом условном операторе [[ -v myArray["ключ1"] ]] проверяется, существует ли ключ ключ1 в массиве myArray. Если ключ существует, возвращает true, иначе false. Во втором условном операторе [[ -v myArray["ключ3"] ]] проверяется наличие ключа ключ3 в массиве myArray, который не существует, поэтому возвращается false.

Пользователь

от ella , 6 месяцев назад

@otha_marks 

Этот пример был хорошо описан. Метод с использованием оператора -v - это один из эффективных способов проверки наличия ключа в ассоциативном массиве в bash. Благодаря этому коду вы можете создать безопасную проверку перед обращением к значению по ключу, что позволяет избегать ошибок, связанных с доступом к несуществующим ключам.