2014-11-18 19 views
7

Robię porównanie ciąg między zmienną i stałą. Wynik porównania - true lub false jest przypisany do innej zmiennej.W bash, jak dokonać porównania i przypisać do zmiennej

Jednak zawodzę. Jakieś sugestie?

+4

Czego chcesz 'LABEL' zawierać? Brak powodzenia? –

+1

Twoje pytanie nie bardzo wyjaśnia, co chcesz uzyskać. Co chcesz umieścić w "LABEL", jeśli "$ INPUT" rozwija się na "flag", a co chcesz uzyskać w inny sposób? –

+0

Dziękuję za komentarz, właśnie edytowałem :) – tashuhka

Odpowiedz

6

Można użyć expr:

INPUT='flag' 
LABEL=$(expr "${INPUT}" == "flag") 
echo "$LABEL" 
1 

INPUT='flab' 
LABEL=$(expr "${INPUT}" == "flag") 
echo "$LABEL" 
0 
+0

Czy jest możliwe, że ewaluacja zwraca 'true' /' false' zamiast '0' /' 1'? – tashuhka

+2

Nie będzie to wymagało nieco dłuższej wersji: '[[" $ INPUT "==" flag "]] && LABEL = true || LABEL = false' – anubhava

1

Prawdopodobnie jest łatwiejsze i może obejmować więcej przypadków testowych. Aby uzyskać więcej informacji na temat porównań ciągów i przypadków testowych za pomocą "testu man". Oto całkiem podstawowa próbka.

if [ "${INPUT}" == "flag" ]; then 
    LABEL=${INPUT} 
fi 

echo ${LABEL} 
Powiązane problemy