Why should there be spaces around '[' and ']' in Bash?

bash, if-statement, syntax

Solution

Once you grasp that `[` is a command, a whole lot becomes clearer!

`[` is another way to spell "`test`".

help [

However while they do exactly the same, `test` turns out to have a more detailed help page. Check

help test

...for more information.

Furthermore note that I'm using, by intention, `help test` and not `man test`. That's because `test` and `[` are shell builtin commands nowadays. Their feature set might differ from `/bin/test` and `/bin/[` from coreutils which are the commands described in the `man` pages.

Problem

I was trying to write a Bash script that uses an `if` statement. ``` if[$CHOICE -eq 1]; ``` The script was giving me errors until I gave a space before and after `[` and before `]` as shown below: ``` if [ $CHOICE -eq 1 ]; ``` My question here is, why is the space around the square brackets so important in Bash?

Original source

Related problems