2016-09-02 2 views
1

У меня есть две переменные (PACKAGE_NAME и PACKAGE_LIST), и я пытаюсь проверить, содержит ли PACKAGE_LISTPACKAGE_NAME.Проверьте, содержит ли список определенную строку

Вот что у меня есть:

PACKAGE_LIST="rpm-foo-bar:5.0.1" 
PACKAGE_NAME="rpm-foo" 

if [[ ${PACKAGE_LIST} =~ "${PACKAGE_NAME}" ]]; then 
    echo "PACKAGE_NAME is in PACKAGE_LIST" 
else 
    echo "PACKAGE_NAME is NOT in PACKAGE_LIST" 
fi 

Проблема у меня в том, что в то время как rpm-foo похож на rpm-foo-bar, это не то же самое, и должны попасть в заявление еще (PACKAGE_NAME НЕ в PACKAGE_LIST). Я попытался добавить $ в сравнение строк, однако это работает, только если PACKAGE_LIST заканчивается на PACKAGE_NAME. Вместо этого PACKAGE_LIST имеет к нему добавленную версию. Как я могу сделать эту проверку более умной, чтобы проверка попала в «PACKAGE_NAME НЕ В PACKAGE_LIST»?

Примечание: иногда PACKAGE_LIST не будет содержать версию и будет выглядеть следующим образом:

PACKAGE_LIST="rpm-foo-bar" 

ответ

2

Как насчет

[[ ${PACKAGE_LIST} =~ "${PACKAGE_NAME}:" || ${PACKAGE_LIST} == ${PACKAGE_NAME} ]] 
+0

Это работает, когда PACKAGE_LIST содержит версию. Я обновляю вопрос, чтобы включить, что он не всегда выглядит так. –

+0

Я обновил свой ответ – redneb

+0

Я не думал об использовании или. Это отлично работает. Благодаря! –

Смежные вопросы