Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fmlexpr(1F) — Amiga System V Release 4 Version 1.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

expr(1)

set(1F)

sh(1)



fmlexpr(1F)       MISC. REFERENCE MANUAL PAGES        fmlexpr(1F)



NAME
     fmlexpr - evaluate arguments as an expression

SYNOPSIS
     fmlexpr arguments

DESCRIPTION
     The fmlexpr function evaluates its arguments as  an  expres-
     sion.   After evaluation, the result is written on the stan-
     dard output.  Terms of the expression must be  separated  by
     blanks.   Characters  special to FMLI must be escaped.  Note
     that 0 is returned to indicate a zero value, rather than the
     null  string.   Strings  containing  blanks or other special
     characters should be quoted.  Integer-valued  arguments  may
     be preceded by a unary minus sign.  Internally, integers are
     treated as 32-bit, 2s complement numbers.

     The operators and keywords  are  listed  below.   Characters
     that  need  to be escaped are preceded by \.  The list is in
     order of increasing precedence, with equal precedence opera-
     tors grouped within {} symbols.

     expr \| expr
          returns the first expr if it is  neither  null  nor  0,
          otherwise returns the second expr.

     expr \& expr
          returns the first expr if neither expr is  null  or  0,
          otherwise returns 0.

     expr { =, \>, \>=, \<, \<=, != } expr
          returns the result of an  integer  comparison  if  both
          arguments are integers, otherwise returns the result of
          a lexical comparison.

     expr { +, - } expr
          addition or subtraction of integer-valued arguments.

     expr { *, /, % } expr
          multiplication, division, or remainder of the  integer-
          valued arguments.

     expr : expr
          The matching operator :  compares  the  first  argument
          with  the  second  argument  which  must  be  a regular
          expression.  Regular expression syntax is the  same  as
          that   of   ed(1),   except   that   all  patterns  are
          ``anchored'' (i.e., begin with ^) and, therefore, ^  is
          not  a  special  character, in that context.  Normally,
          the matching  operator  returns  the  number  of  bytes
          matched  (0  on  failure).   Alternatively, the \(...\)
          pattern symbols can be used to return a portion of  the



                          Last change:                          1





fmlexpr(1F)       MISC. REFERENCE MANUAL PAGES        fmlexpr(1F)



          first argument.

EXAMPLES
     1.   Add 1 to the variable a:

               `fmlexpr $a + 1 | set -l a`

     2.   For $a equal to either "/usr/abc/file" or just "file":

               fmlexpr  $a  :  .*/\(.*\)  \|  $a

     returns the last segment of a path name (i.e., file).  Watch
     out for / alone as an argument:  fmlexpr will take it as the
     division operator (see NOTES below).

     3.   A better representation of example 2.

               fmlexpr  //$a  :  .*/\(.*\)

     The addition of the // characters eliminates  any  ambiguity
     about  the division operator (because it makes it impossible
     for the left-hand expression to be interpreted as the  divi-
     sion oeprator), and simplifies the whole expression.

     4.   Return the number of characters in $VAR.

               fmlexpr $VAR : .*

DIAGNOSTICS
     As a side effect of expression evaluation,  fmlexpr  returns
     the following exit values:
          0    if the expression is neither  null  nor  0  (i.e.,
     TRUE)
          1    if the expression is null or 0 (i.e., FALSE)
          2    for invalid expressions (i.e., FALSE).

     syntax error   for operator/operand errors
     non-numeric argument
                    if arithmetic is attempted on such a string

     In the case of syntax errors and non-numeric  arguments,  an
     error  message  will  be printed at the current cursor posi-
     tion.  Use refresh to redraw the screen.

NOTES
     After argument processing by FMLI, fmlexpr cannot  tell  the
     difference  between an operator and an operand except by the
     value.  If $a is an =, the command:

          fmlexpr  $a  =  =





                          Last change:                          2





fmlexpr(1F)       MISC. REFERENCE MANUAL PAGES        fmlexpr(1F)



     looks like:

          fmlexpr  =  =  =

     as the arguments are passed to fmlexpr (and they will all be
     taken  as the = operator).  The following works, and returns
     TRUE:

          fmlexpr  X$a  =  X=

SEE ALSO
     ed(1), expr(1), set(1F), sh(1).











































                          Last change:                          3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026