Почему проверка не работает, как я ожидаю? - PullRequest
1 голос
/ 08 апреля 2020

Используя bash 4.2, у меня есть ассоциативный массив.

Я хочу проверить, содержит ли значение в ключе строку или нет. Чтобы добиться этого, основываясь на этом topi c, я делаю следующее:

ERRORS[TEST]="TEST"
if [[ ! ERRORS[TEST] =~ "TEST" ]]; then
    echo "failed"
else
    echo "succeed"
fi

Это должно дать эхо не удалось, но эхо успешное.

Что я отсутствует или не понимаешь в этом поведении? Если мой метод неверен, как я могу добиться этого?

1 Ответ

1 голос
/ 08 апреля 2020

Используйте ${ERRORS[TEST]}. Это способ получить значение ассоциативного массива.

ERRORS[TEST] просто вернет код как есть.

Кстати, когда ERRORS[TEST]="TEST", код должен повторить "успешно". Поскольку у вас впереди !, это означает, что он выдает «сбой», когда переменная не содержит «TEST». Это будет эхо "успешно", поскольку оно на самом деле содержит единицу.

BTW x2, если вы используете ERRORS[TEST] вместо ${ERRORS[TEST]}, это также будет эхо "успешно". Но он работает неправильно, так как он всегда возвращает «успешно», так как «ТЕСТ» включен в «ОШИБКИ [ ТЕСТ ]», независимо от фактического значения переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...