if.1 - nroff source : Read if(1) in pdf, ps, or txt form.

IF(1)                          General Commands                          IF(1)

NAME
       if - conditional command

SYNOPSIS
       if expression [command [arg ...]]

DESCRIPTION
       If  evaluates expression, and if its value is true, returns a zero exit
       status or executes the specified  command  with  the  given  arguments.
       Otherwise, a non-zero exit status is returned.

       The following primaries are used to construct expression:

       { command [arg ...] }
                 The specified command is executed with the given arguments to
                 obtain its exit status.  A zero status is true,  and  a  non-
                 zero status is false.

       -d file   True if file exists and is a directory.

       -e file   True if file exists.

       -f file   True if file exists and is a regular file.

       -h file   True if file exists and is a symbolic link.

       -r file   True if file exists and is readable.

       -s file   True if file exists and has a size greater than zero bytes.

       -t fildes True  if  the  file whose file descriptor number is fildes is
                 open and associated with a terminal device.  Fildes must be a
                 decimal digit (0 - 9).

       -w file   True if file exists and is writable.

       -x file   True  if  file  exists  and  is  executable,  or if file is a
                 searchable directory.

       file1 -ef file2
                 True if file1 and file2 both exist and refer to the same file
                 (same device, same inode).

       file1 -nt file2
                 True if file1 and file2 both exist and last data-modification
                 time of file1 is newer than that of file2.

       file1 -ot file2
                 True if file1 and file2 both exist and last data-modification
                 time of file1 is older than that of file2.

       s1 = s2   True if the strings s1 and s2 are equal.

       s1 != s2  True if the strings s1 and s2 are not equal.

       These primaries may also be combined with the following operators:

       ! expression
                 unary negation operator

       expression1 -a expression2
                 binary and operator

       expression1 -o expression2
                 binary or operator

       ( expression )
                 parentheses for grouping

       -a has higher precedence than -o.  Notice that all of the operators and
       flags are separate arguments to if.  Notice also that  parentheses  are
       meaningful to the shell and must be escaped.

EXIT STATUS
       The if command exits with one of the following values:

       0      The expression was true (see below).

       1      The expression was false or was not specified.

       2      An error was detected.

       125    The  specified  command  was  found  but  did not begin with the
              proper magic number or a `#!shell' sequence, and a  valid  shell
              was not specified by EXECSHELL with which to execute it.

       126    The specified command was found but could not be executed.

       127    The specified command was not found.

       If the expression is true and if command is specified and executed, the
       exit status is that of the executed command.

ENVIRONMENT
       Notice that the concept of `user environment' was not defined in  Sixth
       Edition UNIX.  Thus, use of the following environment variables by this
       port of the conditional command is an enhancement:

       EXECSHELL
              If set to a non-empty string, the  value  of  this  variable  is
              taken  as the path name of the shell which is invoked to execute
              the specified command when it does not  begin  with  the  proper
              magic number or a `#!shell' sequence.

       PATH   If  set  to  a  non-empty  string, the value of this variable is
              taken as the sequence of directories which is used to search for
              the specified command.  Notice that the conditional command from
              Sixth   Edition   UNIX   always   used   the    equivalent    of
              `.:/bin:/usr/bin', not PATH.

SEE ALSO
       goto(1), osh(1), sh6(1), test(1)

       Osh home page: http://v6shell.org/

COMPATIBILITY
       The if command from Sixth Edition UNIX does not support the -d, -e, -f,
       -h, -s, -t, -x, -ef, -nt, and -ot operators.

       In addition to supporting the above operators, this port  also  differs
       from  the original in that the exit status returned varies according to
       whether the expression is true or false, as is the case with test(1).

HISTORY
       An if command appeared as /bin/if in Third Edition UNIX.

LICENSE
       See  either  the  LICENSE  file  which  is  distributed  with  osh   or
       http://v6shell.org/license/ for full details.

COPYRIGHT
       Copyright (c) 2004-2010
            Jeffrey Allen Neitzel.  All rights reserved.

       Copyright (c) 2001-2002
            Caldera International Inc.  All rights reserved.

       Copyright (c) 1985, 1989, 1991, 1993
            The Regents of the University of California.  All rights reserved.

osh-20100430                    April 30, 2010                           IF(1)