| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(This message will disappear, once this node revised.)
Radtest provides two kinds of conditional statements:
if and case.
An if statement in its simplest form is:
if cond stmt |
where cond is a conditional expression and stmt is a
valid radtest statement. Optional newline may be inserted
between cond stmt.
In this form, if evaluates the condition and if it yields true,
executes the statement. For example:
if $REPLY[NAS-IP-Address] = 127.0.0.1 print "Request from localhost" |
More complex form of this statement allows to select between the two statements:
if cond stmt-1 else stmt-2 |
Here, stmt-1 will be executed if cond evaluates to true, and stmt-2 will be executed if cond evaluates to false.
Notice, that an optional newline is allowed between cond and
stmt-1 and right after else keyword. However, a newline
before else constitutes an error.
If several statements should be executed in a branch of the if
statement, use compound statement as in the example below:
if $REPLY_CODE != Accounting-Response begin print "Accounting failed.\n" exit 1 end else print "Accounting succeeded.\n" |
If statements can be nested to any depth.
Case statement allows select a statement based on whether
a string expression matches given regular expression. The
syntax of case statement is:
case expr in expr-1 ) stmt-1 expr-2 ) stmt-2 … expr-n ) stmt-n end |
where expr is a control expression, expr-1, expr-2 etc. are expressions evaluating to extended POSIX regular expressions (for the detailed description of these see (regex)Top section `Regular Expression Library' in Regular Expression Library).
Case statement first evaluates expr and converts it to
string data type. Then it evaluates each expr-n in turn
and tests if the resulting regular expression matches expr. If
so, the statement stmt-n is executed and the execution of
case statement finishes.
The following example illustrates the concept:
case $COMMAND in
"auth.*") authenticate($LIST, no)
"acct") authenticate($LIST, yes)
".*") begin
print "Unknown command."
exit 1
end
end
|
Bourne shell programmers should notice that:
Case statement ends with end, not esac.
;; at the end of each branch,
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Sergey Poznyakoff on December, 6 2008 using texi2html 1.78.