Shash Shash - 6 months ago 9
Linux Question

Why should there be a space after '[' and before ']' in a Bash script?

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 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?

Answer

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.