User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

special_vars [2006/08/29 20:18] (current)
Line 1: Line 1:
 +======Special Variables and Expandos======
 +In addition to normal variables created with [[ASSIGN]], and
 +the built-in [[SET]] variables, EPIC also supports a number
 +of reserved, dynamic variables, sometimes referred to as expandos. ​ They
 +are special in that the client is constantly updating their values
 +automatically. ​ There are also numerous variable modifiers available.
 +^     ​Modifier ​    ​^ ​   Description ​                                          ^
 +|$variable ​        |A normal variable, expanding to the first match of: \\ 1) a variable created with [[ASSIGN]] or @ \\ 2) an internal [[SET]] variable \\ 3) an environment variable \\ 4) an empty string ​             |
 +|$[num]variable ​   |Expands to the variables value, with '​num'​ width. ​ If the number is negative, the value is right-aligned. The value is truncated or padded to meet the width. ​             |
 +|$#​variable ​       |Expands to the number of words in $variable. If $variable is omitted, it assumes $*              |
 +|$@variable ​       |Expands to the number of characters in $variable. if $variable is omitted, it assumes $*              |
 +|$($subvariable) ​  |This is somewhat similar to a pointer, in that the value of $subvar is taken as the name of the variable to expand to.  Nesting is allowed. ​             |
 +|${expression} ​    ​|Expands to the return value of the expression. ​ In addition, ${} permits the value to be embedded in another string unambiguously. ​             |
 +|$!history! ​       |Expands to a matching entry in the client'​s command history, wildcards allowed. ​             |
 +|$"​some text" ​     |Uses '​text'​ as an input prompt, and returns the next line of text the user types (up to a <​return>​) ​             |
 +|$'​some text' ​     |Uses '​text'​ as an input prompt, and returns the next key that the user presses. ​             |
 +Whenever an alias is called, these expandos are set to the arguments passed
 +to it.  If none of these expandos are used in the alias, or the $() form
 +shown above, any arguments passed will automatically be appended to the last
 +command in the alias.
 +^   ​Expando ​ ^     ​Description ​                                                 ^
 +|$*          |expands to all arguments passed to an alias                       |
 +|$n          |expands to argument '​n'​ passed to an alias (counting from zero)   |
 +|$n-m        |expands to arguments '​n'​ through '​m'​ passed to an alias           |
 +|$n-         ​|expands to all arguments from '​n'​ on passed to an alias           |
 +|$-m         ​|expands to all arguments up to '​m'​ passed to an alias             |
 +|$~          |expands to the last argument passed to an alias                   |
 +These variables are set and updated dynamically by the client. ​ The case of
 +$A .. $Z is important. ​ Also note that $A .. $Z can be overridden by [[ASSIGN]],
 +so it is usually good practice to make variable names 2 or more characters
 +^   ​Variable ​   ^      Description ​                                              ^
 +|$,             |last person who sent you a [[MSG]] ​                |
 +|$.             |last person to whom you sent a [[MSG]] ​                |
 +|$:             |last person to join a channel you are on                 |
 +|$;             |last person to send a public message to a channel you are on                 |
 +|$A             |text of your [[AWAY]] message, if any                 |
 +|$B             |body of last [[MSG]] you sent                 |
 +|$C             ​|current channel ​                |
 +|$D             |last person that [[notify command|NOTIFY]] detected a signon for                 |
 +|$E             |idle time                 |
 +|$F             |time client was started, $[[time function|time]]() format ​                |
 +|$G             ​|value of [[set banner|BANNER]],​ expanded if [[set banner_expand|BANNER_EXPAND]] is on.                 |
 +|$H             ​|current server numeric being processed ​                |
 +|$I             ​|channel you were last [[INVITE]]d to                 |
 +|$J             ​|client version text string ​                |
 +|$K             ​|current value of [[set cmdchars|CMDCHARS]] ​                |
 +|$L             ​|current contents of the input line                 |
 +|$M             ​|modes of current channel, if any                 |
 +|$N             ​|current nickname ​                |
 +|$O             ​|value of [[set status oper|STATUS_OPER]] if you are an irc operator ​                |
 +|$P             |if you are a channel operator in $C, expands to a '​@' ​                |
 +|$Q             ​|nickname of whomever you are [[QUERY]]ing ​                |
 +|$R             ​|version of current server ​                |
 +|$S             ​|current server name                 |
 +|$T             ​|target of current input (channel or [[QUERY]] nickname) ​                |
 +|$U             ​|value of cutbuffer ​                |
 +|$V             ​|client release date (numeric version string) ​                |
 +|$W             ​|current working directory ​                |
 +|$X             |your /[[userhost command|userhost]] $N address (user@host) ​                |
 +|$Y             ​|value of REALNAME ​                |
 +|$Z             |time of day (hh:​mm) ​                |
 +|$$             |a literal '​$' ​                |
 +For example, assume you have the following alias:
 +   alias blah { msg $D Hi there! ​ }
 +If /blah is passed any arguments, they will automatically be appended to the
 +[[MSG]] text.  For example:
 +   /blah oops                          /* command as entered */
 +   "​Hi there! oops" ​                   /* text sent to $D */
 +One of the more confusing expandos to look at is the $() form.  It evaluates
 +the variable or function inside the parenthesis,​ and whatever is returned is
 +used as the name of the variable to expand. ​ For example:
 +   ​assign foo blah                     /* inside variable */
 +   ​assign blah 10                      /* real variable */
 +   /eval echo $($foo) ​                 /* $foo expands to "​blah"​ */
 +   "​10" ​                               /* $blah expands to "​10"​ */
 +Another useful form is ${}.  In general, variables can be embedded inside
 +strings without problems, assuming the surrounding text could not be
 +misinterpreted as part of the variable name.  This form guarantees that
 +surrounding text will not affect the expression'​s return value.
 +   /eval echo foo$Nfoo ​                /* breaks, looks for $nfoo */
 +   /eval echo foo${N}foo ​              /* ${N} returns current nickname */
 +   ​fooYourNickfoo ​                     /* returned by above command */
 +   /eval echo ${[foo]}bar ​             /* expression parser may be used */
 +   ​foobar ​                             /* returned by above command */
special_vars.txt ยท Last modified: 2006/08/29 20:18 (external edit)