Why should there be spaces around '[' and ']' in Bash?
Solution 1:
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.
Solution 2:
From another question:
A bit of history: this is because '[' was historically not a shell-built-in but a separate executable that received the expresson as arguments and returned a result. If you didn't surround the '[' with space, the shell would be searching $PATH for a different filename (and not find it) . – Andrew Medico Jun 24 '09 at 1:13