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  the  specified  expression,  and  if  its value is true,
       returns a zero exit status or executes the specified command  with  the
       given  arguments.   Otherwise, it returns a non-zero exit status.  When
       expression is not specified, if also returns a non-zero exit status.

       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; 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.

       Symbolic links are followed for all file-related primaries except -h.

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-2012
            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-20120102                    January 2, 2012                          IF(1)