An `if` statement typically looks like

 if commands1
 then
 commands2
 else
 commands3
 fi


The `then` clause is executed if the exit code of `commands1` is zero. If the exit code is nonzero, then the `else` clause is executed. `commands1` can simple or complex. It can, for example, be a sequence of one or more pipelines separated by one of the operators `;`, `&`, `&&`, or `||`. The `if` conditions shown below are just special cases of `commands1`:

1. `if [ condition ]`

 This is the traditional shell test command. It is available on all POSIX shells. The test command sets an exit code and the `if` statement acts accordingly. Typical tests are whether a file exists or one number is equal to another.

2. `if [[condition]]`

 This is a new upgraded variation on test that bash supports. This test command also sets an exit code and the `if` statement acts accordingly. Among its extended features, it can test whether a string matches a regular expression.

3. `if ((condition))`

 This performs arithmetic. As the result of the arithmetic, an exit code is set and the `if` statement acts accordingly. It returns an exit code of zero (true) if the result of the arithmetic calculation is nonzero.


4. `if (command)`

 This runs command in a subshell. When command completes, it sets an exit code and the `if` statement acts accordingly.

5. `if command`

 command is executed and the `if` statement acts according to its exit code.