test [ arg ... ]
[ [ arg ... ] ]
       Like the system version of test.  Added for  compatibility;  use
       conditional  expressions  instead  (see the section `Conditional
       Expressions').  The main  differences  between  the  conditional
       expression  syntax  and the test and [ builtins are:  these com-
       mands are not handled syntactically, so  for  example  an  empty
       variable  expansion  may cause an argument to be omitted; syntax
       errors cause status 2 to be returned instead of a  shell  error;
       and  arithmetic  operators  expect integer arguments rather than
       arithmetic expressions.

       The command attempts to implement POSIX and its extensions where
       these are specified.  Unfortunately there are intrinsic ambigui-
       ties in the  syntax;  in  particular  there  is  no  distinction
       between  test  operators  and  strings  that resemble them.  The
       standard attempts to resolve these for small  numbers  of  argu-
       ments  (up  to  four);  for five or more arguments compatibility
       cannot be relied on.  Users are urged wherever possible  to  use
       the `[[' test syntax which does not have these ambiguities.
