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.