2013-09-16 11 views
8

Bash, 'da aşağıdaki koşul ifadesi için mantıksal olmayı istemiyorum, bunu nasıl yapabilirim? Yukarıdaki ifadede doğrudan değil mantıksal başa ekleyebilir nasılBash'de karmaşık koşullu ifadede mantıksal olmayan operatör nasıl kullanılır?

if [[ $var==2 || $var==30 || $var==50 ]] ; then 
    do something 
fi 

, böyle şeylerin içine tekrar değiştirmek çok sıkıcı olduğunu: Herhangi ipuçları için

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then 
    do something 
fi 

teşekkürler!

cevap

17
if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then 
    do something 
fi 

Veya:

if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then 
    do something 
fi 

Ve iyi bir uygulama için koşullu operatörleri ve işlenen arasında boşluk sahip olmaktır. o övgüye değil ya $var bazen olabilir, eğer dikkatli verilecek olmasına rağmen

if ! [[ var -eq 2 || var -eq 30 || var -eq 50 ]] ; then 
    do something 
fi 

if ! ((var == 2 || var == 30 || var == 50)) ; then 
    do something 
fi 

:

Bazıları da sadece sayıları karşılaştırarak eğer, bunun yerine bir aritmetik operatörünü kullanmak, ya da sadece (()) kullanmanızı önerebilir sayısal değil ya da değer ya da değersiz değil, varsayılan olarak 0 ya da bir değişkenin adıysa başka bir değişkenin başka bir değeri olabilir.