# ircII help - if

Usage: IF (<variable-expression>) {} [{}]

IF tests the value of the variable expression for truth. An   expression is true if it is either a non empty string or a non   zero number. If the expression is true, the true-commands are   executed. If it is false, and the false-commands are given, they   are executed. Usually the expressions will be formed by using   combinations of the following: ( exp ) ( exp1 ^^ exp2 ) ( exp1 == exp2 ) ( exp1 >= exp2 ) ( exp1 != exp2 ) ( exp1 <= exp2 ) ( exp1 > exp2 ) ( exp1 || exp2 ) ( exp1 < exp2 ) ( exp1 && exp2 )            Here exp is evaluated as though it were in \${} which means that   if (blah) expands the contents of \$blah. Numbers are treated   as constants and thus to expand \$0 it must be passed to the   regular parser with []. eg. if ([\$0]) ...

if (!exp) is also possible which will negate a number or a string.   In the other expressions, if both exp1 and exp2 expand to numbers,   then the following cause true-command to be executed: == if exp1 is equal to exp2 != if exp1 is not equal to exp2 > if exp1 is greater than exp2 < if exp1 is less than exp2 >= if exp1 is greater than or equal to exp2 <= if exp1 is less than or equal to exp2 ^^ Logical XOR of exp1 and exp2 (1 ^^ 1) == 0   (1 ^^ 0) or (0 ^^ 1) == 1 || Logical OR of exp1 and exp2 && Logical AND or exp1 and exp2

Otherwise, false-command (if present) is executed.   If both exp1 and exp2 are non-numeric, then the above operations   are string value comparisons. And for the logical operations   A NULL string is treated as 0 with the possible exception of the ^^   operator.

To put a string in an expression it must be passed to the   regular parser with []. eg if ([string1] == [string2]) ..   All string comparisons are case-insensitive: so ([Hello]==[HELLO])   is true.

Examples:     if (C) { set input_prompt \$C } { set -input_prompt }     if (C!=0) { set input_prompt \$C } { set -input_prompt }

Both of the above evaluate the same way, since \$C will either expand   to your current channel or 0 if none. Notice the (C) format which   means that it will expand exactly like \${C}.     \$ expansion is always performed on the contents of an the true-commands   and false commands, regardless of the setting of the INPUT_ALIASES   variable.

if (USER==[ms5n]) { echo Hello Mike! } { echo Who the hell are you? }

This example will look for an assign'd variable named USER, and if found   replace it and compare to ms5n. If no assign'd variable exists, it   will check the environment variables for USER and return that.

if (index > max*2) { echo Limit reached }   This checks the assign'd variable against the assign'd variable   max times 2 and displays "Limit reached" if the first is greater than   the second. It does nothing if this is not true.

if's can now be imbedded within each other. It is inconvient to write it   out on a single line, so I will show the format needed in a script file.

if (time() - lasttime > 600)   {     if (thud == [gone home])     {       echo Bill went home over ten minutes ago       echo \$stime(\$time())     }     {       echo Bill is still here.     }   }

This will first expand the function time() and the ASSIGN'd var 'lasttime'   to their current values, subtract (seconds) and see if its more than   600 seconds, (10 minutes). If that is true, then it checks to see if the   assign'd var 'thud' equals the string "gone home". If that is ALSO true   then it will echo "Bill went home over ten minutes ago" and the current   date and time. If the second if is not true then it will display   "Bill is still here.". Note there is no 'false' clause for the first   if.