Как сделать сложные условия в bash? (сочетание "и"&&, "или" || …)

Как я могу выполнить что-то вроде следующего в bash?

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

2 ответов


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

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

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

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

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