Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csh(1csh)

expr(1)

find(1)

make(1)

sh(1sh)

test(1sh)

access(2)

chmod(2)

stat(2)



TEST(1)                 COMMAND REFERENCE                 TEST(1)



NAME
     test - condition command

SYNOPSIS
     test expr [ expr ]

DESCRIPTION
     Test evaluates the expression expr, and if its value is true
     then returns zero exit status; otherwise, a nonzero exit
     status is returned.  Test returns a nonzero exit if there
     are no arguments.

     If test is executed as the bracket [, the last argument must
     be the matching bracket ].

     The command is available as a builtin sh command and as a
     shell script for use in csh and make.

     The following primitives are used to construct expr:

     -r filename
               True if the file exists and is readable.

     -w filename
               True if the file exists and is writable.

     -x filename
               True if the file exists and is executable.

     -f filename
               True if the file exists and is not a directory.

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

     -c filename
               True if the file exists and is a character special
               file.

     -b filename
               True if the file exists and is a block special
               file.

     -U filename
               True if the file exists and is a UTek-domain
               socket.

     -u filename
               True if the file exists and its set-user-ID bit is
               set.

     -g filename



Printed 4/6/89                                                  1





TEST(1)                 COMMAND REFERENCE                 TEST(1)



               True if the file exists and its set-group-ID bit
               is set.

     -k filename
               True if the file exists and its sticky bit is set
               (see chmod(2) ).

     -S filename
               True if the file exists and is a symbolic link.

     -s filename
               True if the file exists and has a size greater
               than 0.

     -t [ fildes ]
               True if the open file whose file descriptor number
               is fildes (1 by default) is associated with a
               terminal device.

     -z s1     True if the length of string s1 is 0.

     -n s1     True if the length of the string s1 is nonzero.

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

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

     s1        True if s1 is not the null string.

     n1 -eq n2 True if the integers n1 and n2 are algebraically
               equal.  Any of the comparisons -ne, -gt, -ge, -lt,
               or -le may be used in place of -eq.

     These primaries may be combined with the following
     operators:

     !         Unary negation operator

     -a        Binary and operator

     -o        Binary or operator

     ( expr )  Parentheses for grouping

     There are four functions which return integer values and may
     only be used in algebraic comparisons:

     -l string Length of string

     -C filename
               Time of the last status change to filename (see
               stat(2))



Printed 4/6/89                                                  2





TEST(1)                 COMMAND REFERENCE                 TEST(1)



     -M filename
               Time of the last modification to filename (see
               stat(2))

     -A filename
               Time of the last access to filename (see stat(2))

EXAMPLES
     The following example shows a piece of a shell script which
     prints a usage message if the first argument to the script
     is null:

          if test -z "$1"
          then
               echo "usage : script arg"
          fi

     The following shell script prints a message for each of its
     arguments that are longer than 72 characters:

          #!/bin/sh
          for i in "$@"
          do
               if [ -l $i -gt 72 ]
               then
                    echo "Argument too long :" $i
               fi
          done

     This example shows a use for the -M option. If the file copy
     is older than the file original, the latter is copied to
     copy:

          if test -M copy -lt -M original
          then
               cp original copy
          fi

RETURN VALUE
     [0]            The expression evaluates to true.

     [1]            The expression evaluates to false.

     [USAGE]        Incorrect command line syntax. Execution
                    terminated.

     [NP_ERR]       An error occurred that was not a system
                    error.  Execution terminated.

CAVEATS
     The -a option has higher precedence than -o. Notice that all
     the operators and flags are separate arguments to test.



Printed 4/6/89                                                  3





TEST(1)                 COMMAND REFERENCE                 TEST(1)



     Notice also that parentheses are meaningful to the Shell and
     must be escaped.

     The file access operators -r, -w, and -x always evaluate to
     false if the filename is null, as in the following example:

          test -r ""

     Test is actually a shell script which executes the sh
     builtin command.  This is for use in programs such as
     make(1) that may need to execute test directly.

SEE ALSO
     csh(1csh), expr(1), find(1), make(1), sh(1sh), test(1sh),
     access(2), chmod(2), and stat(2).








































Printed 4/6/89                                                  4



%%index%%
na:240,76;
sy:316,170;
de:486,1998;2796,2218;5326,311;
ex:5637,937;
rv:6574,439;
ca:7013,295;7620,604;
se:8224,322;
%%index%%000000000149

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026