2014-11-18 6 views
7

Ich mache einen String-Vergleich zwischen einer Variablen und einer Konstante. Das Ergebnis des Vergleichs - entweder true oder false wird einer anderen Variablen zugewiesen.In Bash, wie man einen Vergleich und die Zuweisung an die Variable

LABEL=$("${INPUT}" == "flag"); 

Allerdings versage ich. Irgendein Vorschlag?

+4

Was möchten Sie 'LABEL' enthalten? Erfolg/Misserfolg? –

+1

Ihre Frage ist nicht sehr klar, was Sie erhalten möchten. Was soll 'LABEL' enthalten, wenn' $ INPUT' auf 'flag' erweitert wird und was sonst noch gewünscht ist? –

+0

Danke für den Kommentar, den ich gerade bearbeitet habe :) – tashuhka

Antwort

6

Sie können expr verwenden:

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

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

Ist es möglich, dass die Auswertung 'true' /' false' anstelle von '0' /' 1' zurückgibt? – tashuhka

+2

Nein, das wird eine etwas längere Version benötigen: '[[$ INPUT" == "flag"]] && LABEL = true || LABEL = false' – anubhava

1

Dies ist wahrscheinlich einfacher und kann mehr Testfälle abdecken. Sie können mehr Details über Zeichenkettenvergleiche und Testfälle über 'man test' erhalten. Hier ist ein ziemlich einfaches Beispiel.

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

echo ${LABEL}