Conditional Expressions

   

Korn Shell: Unix and Linux Programming Manual, Third Edition, The
By Anatole Olczak

Table of Contents
Appendix E.  Korn Shell Man Page


A conditional expression is used with the [[compound command to test attributes of files and to compare strings. Field splitting and file name generation are not performed on the words between [[ and ]]. Each expression can be constructed from one or more of the following unary or binary expressions:

string

True, if string is not null.

-a file

Same as -e below. This is obsolete.

-b file

True, if file exists and is a block special file.

-c file

True, if file exists and is a character special file.

-d file

True, if file exists and is a directory.

-e file

True, if file exists.

-f file

True, if file exists and is an ordinary file.

-g file

True, if file exists and it has its setgid bit set.

-k file

True, if file exists and it has its sticky bit set.

-n string

True, if length of string is non-zero.

-o option

True, if option named option is on.

-p file

True, if file exists and is a fifo special file or a pipe.

-r file

True, if file exists and is readable by current process.

-s file

True, if file exists and has size greater than zero.

-t fildes

True, if file descriptor number fildes is open and associated with a terminal device.

-u file

True, if file exists and it has its setuid bit set.

-w file

True, if file exists and is writable by current process.

-x file

True, if file exists and is executable by current process. If file exists and is a directory, then true if the current process has permission to search in the directory.

-z string

True, if length of string is zero.

-L file

True, if file exists and is a symbolic link.

-O file

True, if file exists and is owned by the effective user id of this process.

-G file

True, if file exists and its group matches the effective group id of this process.

-S file

True, if file exists and is a socket.

file1 -nt file2

True, if file1 exists and file2 does not, or file1 is newer than file2.

file1 -ot file2

True, if file2 exists and file1 does not, or file1 is older than file2.

file1 -ef file2

True, if file1 and file2 exist and refer to the same file.

string == pattern

True, if string matches pattern. Any part of pattern can be quoted to cause it to be matched as a string.

string = pattern

Same as == above, but is obsolete.

string != pattern

True, if string does not match pattern.

string1 < string2

True, if string1 comes before string2 based on ASCII value of their characters.

string1 > string2

True, if string1 comes after string2 based on ASCII value of their characters.

The following obsolete arithmetic comparisons are also permitted:

exp1 -eq exp2

True, if exp1 is equal to exp2.

exp1 -ne exp2

True, if exp1 is not equal to exp2.

exp1 -lt exp2

True, if exp1 is less than exp2.

exp1 -gt exp2

True, if exp1 is greater than exp2.

exp1 -le exp2

True, if exp1 is less than or equal to exp2.

exp1 -ge exp2

True, if exp1 is greater than or equal to exp2.

In each of the above expressions, if file is of the form /dev/fd/n, where n is an integer, then the test is applied to the open file whose descriptor number is n.

A compound expression can be constructed from these primitives by using any of the following, listed in decreasing order of precedence.

(expression)

True, if expression is true. Used to group expressions.

! expression

True if expression is false.

expression1 && expression2

True, if expression1 and expression2 are both true.

expression1 || expression2

True, if either expression1 or expression2 is true.


       
    Top
     



    Korn Shell. Unix and Linux Programming Manual, Third Edition
    Korn Shell. Unix and Linux Programming Manual, Third Edition
    ISBN: N/A
    EAN: N/A
    Year: 2000
    Pages: 177

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net