Multiple and ors in if statement bash

unix

Solution

You can't nest `[ ... ]` because `[` is a shell command, not a separate syntactic construct. In Bash, you can use the `[[ ... ]]` syntactic construct which does support nesting, and in portable `sh` you can use the `( ... )` parentheses for precedence:

if ([ $pcount -eq 0 ] && [ $ucount -eq 0 ]) ||  [ $flag -eq 1 ]

Additional remarks:

`[test condition]` doesn't make sense, since the `[` operator is already an alias for `test`. Write either `[ condition ]` or `test condition`.

Leave a space before `[` and the test, otherwise `sh` won't recognize the `[` as a command name. `[` is a command like any other and is not associated with special parsing rules.

Problem

Hi i am working on somoething , i need to create a if statement which will take multiple variables in '&&' and '||' combination . for now i am trying to this this simple task but i am getting errors 'Command not found'. i want to first && two counts than || it with a flag i set in my code. following is the code i am trying ``` if [[$pcount -eq 0 ] && [$ucount -eq 0]] || [test $flag -eq 1] then do my stuff else exit 1 fi ``` thank you in advance.

Original source