2015-09-11 5 views
0

Я бы хотел сравнить две строки, а затем еще две строки. Так что если $ версия не равна 5, а тип не равен dbma ИЛИ если $ версии не равен 6 и $ тип не равен dbmyсравнить две строки в bash

Я совсем не могу получить правильный синтаксис.

if [[ "${version}" != "5" ]] && [[ "${type}" != "dbma" ]] || [[ "${version}" != "6" ]] && [[ "${type}" != "dbmy" ]] 
then 
    xyz 
else 
    abc 
fi 

Может кто-нибудь помочь?

+2

Ваш вопрос неоднозначен, как и ваш код. Оболочка анализирует это слева направо, так что вы эффективно, если ((версия не 5 и тип не «dbma»), либо версия не 6) и тип не «dbmy» ... но вы должны добавить похожие скобки к своему вопрос, чтобы указать, что вы имеете в виду. Я предполагаю, что вы хотите (foo и bar) или (baz и quux) на самом деле? – tripleee

ответ

1

Предполагая, что это то, что вы на самом деле имеете в виду ...

if [[ ($version != 5 && $type != "dbma") || ($version != 6 && type != "dbmy") ]] 

[[ встроенный позволяет круглых скобок и логических операторов в выражении (в то время как наследие [ не было ни, и более новые версии имеют -a и -o для " и "и" или ", но без круглых скобок).

+0

Большое спасибо !!! – freddie

Смежные вопросы