2014-11-18 29 views
7

Bir değişken ve bir sabit arasında bir dize karşılaştırması yapıyorum. Karşılaştırmanın sonucu - true veya false başka bir değişkene atanır. Ancak, hata yapıyorum. Herhangi bir öneri?Bash, bir karşılaştırma yapmak ve değişkene atama

+4

'LABEL' ne içermesini istiyorsun? Başarı/başarısızlık? –

+1

Sorunuz, elde etmek istediğiniz şey konusunda net değildir. "INPUT", "flag" a genişlerse LABEL 'in ne içermesini ve aksi halde ne elde etmek istersiniz? –

+0

Yorum için teşekkürler, ben sadece düzenledim :) – tashuhka

cevap

6

Sen expr kullanabilirsiniz:

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

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

Değerlendirmenin '0' /' 1' yerine 'true' /' false' döndürmesi mümkün mü? – tashuhka

+2

Hayır, bunun için biraz daha uzun bir sürüm gerektirecek: [["$ INPUT" == "flag"]] && LABEL = true || ETİKET = FALSE – anubhava

1

Bu muhtemelen daha kolay ve daha test durumları kapsayabilir. Dize karşılaştırmaları ve test senaryoları hakkında daha detaylı bilgi alabilirsiniz. İşte oldukça basit bir örnek.

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

echo ${LABEL} 
İlgili konular