Как выполнить сложные условные обозначения в bash? (сочетание 'и' &&, 'или' ||...)

Как выполнить следующее в bash?

if ("$a" == "something" || ($n == 2 && "$b" == "something_else")); then
  ...
fi

Ответ 1

Вы почти получили его:

if [[ "$a" == "something" || ($n == 2 && "$b" == "something_else") ]]; then

Фактически, круглые скобки могут быть опущены из-за приоритета оператора, поэтому его также можно записать как

if [[ "$a" == "something" || $n == 2 && "$b" == "something_else" ]]; then

Ответ 2

if [[ "$a" == "something" ]] || [[ $n == 2 && "$b" == "something_else" ]]; then
  ...
fi