This section describes commands that are primarily useful for their exit
status, rather than their output. Thus, they are often used as the
condition of shell if
statements, or as the last command in a
pipeline.
false
: Do nothing, unsuccessfully
false
does nothing except return an exit status of 1, meaning
failure. It can be used as a place holder in shell scripts
where an unsuccessful command is needed.
false
ignores all command line arguments, even `--help'
and `--version', since to do otherwise would change expected
behavior that some programmers may be relying on.
This version of false
is implemented as a C program, and is thus
more secure and faster than a shell script implementation, and may safely
be used as a dummy shell for the purpose of disabling accounts.
true
: Do nothing, successfully
true
does nothing except return an exit status of 0, meaning
success. It can be used as a place holder in shell scripts
where a successful command is needed, although the shell built-in
command :
(colon) does the same thing faster.
true
ignores all command line arguments, even `--help'
and `--version', since to do otherwise would change expected
behavior that some programmers may be relying on.
This version of true
is implemented as a C program, and is thus
more secure and faster than a shell script implementation, and may safely
be used as a dummy shell for the purpose of disabling accounts.
test
: Check file types and compare values
test
returns a status of 0 (true) or 1 (false) depending on the
evaluation of the conditional expression expr. Each part of the
expression must be a separate argument.
test
has file status checks, string operators, and numeric
comparison operators.
Because most shells have a built-in command by the same name, using the unadorned command name in a script or interactively may get you different functionality than that described here.
Besides the options below, test
accepts a lone `--help' or
`--version'. See section 2. Common options. A single non-option argument
is also allowed: test
returns true if the argument is not null.
These options test for particular types of files. (Everything's a file, but not all files are the same!)
These options test for particular access permissions.
These options test other file characteristics.
These options test string characteristics. Strings are not quoted for
test
, though you may need to quote them to protect characters
with special meaning to the shell, e.g., spaces.
Numeric relationals. The arguments must be entirely numeric (possibly
negative), or the special expression -l string
, which
evaluates to the length of string.
For example:
test -1 -gt -2 && echo yes => yes test -l abc -gt 1 && echo yes => yes test 0x100 -eq 1 error--> test: integer expression expected before -eq
test
The usual logical connectives.
expr
: Evaluate expressions
expr
evaluates an expression and writes the result on standard
output. Each token of the expression must be a separate argument.
Operands are either numbers or strings. expr
coerces
anything appearing in an operand position to an integer or a string
depending on the operation being applied to it.
Strings are not quoted for expr
itself, though you may need to
quote them to protect characters with special meaning to the shell,
e.g., spaces.
Operators may given as infix symbols or prefix keywords. Parentheses may be used for grouping in the usual manner (you must quote parentheses to avoid the shell evaluating them, however).
0 if the expression is neither null nor 0, 1 if the expression is null or 0, 2 for invalid expressions.
expr
supports pattern matching and other string operators. These
have lower precedence than both the numeric and relational operators (in
the next sections).
grep
) regular
expression, with a ^
implicitly prepended. The first argument is
then matched against this regular expression.
If the match succeeds and regex uses `\(' and `\)', the
:
expression returns the part of string that matched the
subexpression; otherwise, it returns the number of characters matched.
If the match fails, the :
operator returns the null string if
`\(' and `\)' are used in regex, otherwise 0.
Only the first `\( ... \)' pair is relevant to the return
value; additional pairs are meaningful only for grouping the regular
expression operators.
In the regular expression, \+
, \?
, and \|
are
operators which respectively match one or more, zero or one, or separate
alternatives. SunOS and other expr
's treat these as regular
characters. (POSIX allows either behavior.)
See section `Regular Expression Library' in Regex, for details of
regular expression syntax. Some examples are in section 5.4.4 Examples of using expr
.
/
.
This makes it possible to test expr length quote "$x"
or
expr quote "$x" : '.*/\(.\)'
and have it do the right thing even if
the value of $x happens to be (for example) /
or index
.
This operator is a GNU extension. It is disabled when
the environment variable @env{POSIXLY_CORRECT} is set.
To make expr
interpret keywords as strings, you must use the
quote
operator.
expr
supports the usual numeric operators, in order of increasing
precedence. The string operators (previous section) have lower precedence,
the connectives (next section) have higher.
expr
expr
supports the usual logical connectives and relations. These
are higher precedence than either the string or numeric operators
(previous sections). Here is the list, lowest-precedence operator first.
==
is a synonym for =
. expr
first tries to coerce
both arguments to numbers and do a numeric comparison; if either
coercion fails, it does a lexicographic comparison.
expr
Here are a few examples, including quoting for shell metacharacters.
To add 1 to the shell variable foo
, in Bourne-compatible shells:
foo=`expr $foo + 1`
To print the non-directory part of the file name stored in
$fname
, which need not contain a /
.
expr $fname : '.*/\(^.*\)' '^|' $fname
An example showing that \+
is an operator:
expr aaa : 'a\+' => 3
expr abc : 'a\(.\)c' => b expr index abcdef cz => 3 expr index index a error--> expr: syntax error expr index quote index a => 0
Go to the first, previous, next, last section, table of contents.