2016-09-02 5 views
1

Ich habe zwei Variablen (PACKAGE_NAME und PACKAGE_LIST) und ich versuche zu überprüfen, ob PACKAGE_LISTPACKAGE_NAME enthält. HierÜberprüfen, ob die Liste spezifische Zeichenfolge enthält

ist, was ich habe:

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 

Das Problem, das ich habe, ist, dass während rpm-foo zu rpm-foo-bar ähnlich ist, es ist nicht das Gleiche und sollte die else-Anweisung fallen in (PACKAGE_NAME ist NICHT in PACKAGE_LIST). Ich habe versucht, eine $ zum String-Vergleich hinzufügen, aber das funktioniert nur, wenn PACKAGE_LIST endet in der PACKAGE_NAME. Stattdessen wird an PACKAGE_LIST eine Version angehängt. Wie kann ich diesen Check schlauer machen, damit der Check in "PACKAGE_NAME ist NICHT in PACKAGE_LIST" fällt?

HINWEIS: manchmal PACKAGE_LIST wird keine Version enthalten und wird wie folgt aussehen:

PACKAGE_LIST="rpm-foo-bar" 

Antwort

2

Wie wäre es

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

Das funktioniert, wenn PACKAGE_LIST die Version enthält. Ich habe die Frage so aktualisiert, dass sie nicht immer so aussieht. –

+0

Ich habe meine Antwort aktualisiert – redneb

+0

Ich hatte nicht daran gedacht, ein oder. Das funktioniert großartig. Vielen Dank! –

Verwandte Themen