fmlexpr(1F) (Form and Menu Language Interpreter) fmlexpr(1F)
NAME
fmlexpr - Argumente als Ausdruck bewerten
SYNTAX
fmlexpr arguments
BESCHREIBUNG
Die Funktion fmlexpr bewertet ihre Argumente als einen Ausdruck. Nach
der Bewertung wird das Ergebnis in die Standardausgabe geschrieben.
Die Bestandteile des Ausdrucks müssen durch Leerzeichen getrennt wer-
den. Speziellen FMLI-Zeichen muß Escape-Zeichen vorangestellt werden.
0 wird zurückgegeben, um nicht die Null-Zeichenkette, sondern einen
Wert Null zu kennzeichnen. Zeichenketten mit Leerzeichen oder anderen
Sonderzeichen sollten in Hochkommata gesetzt werden. Ganzzahligen
Argumenten kann ein Minusvorzeichen vorangestellt werden. Ganzzahlen
werden intern als 32-Bit-Zweierkomplementzahlen behandelt.
Die Operatoren und Schlüsselwörter sind unten aufgelistet. Zeichen,
die mit einem Escape-Zeichen versehen sein müssen, ist \ vorange-
stellt. Die Liste ist aufsteigend nach Priorität geordnet, wobei Ope-
ratoren gleicher Priorität in geschweiften Klammern {} gruppiert wer-
den.
expr \| expr
Gibt das erste Argument expr zurück, wenn es weder null noch 0
ist. Andernfalls gibt es das zweite expr zurück.
expr \& expr
Gibt das erste Argument expr zurück, wenn keiner der beiden expr
null oder 0 ist. Andernfalls gibt es 0 zurück.
expr { =, \>, \>=, \<, \<=, != } expr
Gibt das Ergebnis eines Ganzzahlenvergleiches zurück, wenn beide
Argumente Ganzzahlen sind. Andernfalls gibt es das Ergebnis eines
lexikalischen Vergleiches zurück.
expr { +, - } expr
Addition oder Subtraktion ganzzahliger Argumente.
expr { *, /, % } expr
Multiplikation, Division oder der Rest der ganzzahligen Argu-
mente.
expr : expr
Der Vergleichsoperator : vergleicht das erste Argument mit dem
zweiten Argument, das ein regulärer Ausdruck sein muß. Die Syntax
regulärer Ausdrücke ist die gleiche wie die von ed(1), außer daß
alle Muster fest verbunden sind, d. h. mit ^ beginnen. ^ ist in
diesem Kontext also kein Sonderzeichen. Normalerweise gibt der
Vergleichsoperator die Anzahl der übereinstimmenden Bytes zurück
(0 beim Fehlschlagen). Mit Hilfe des Musters \(...\) kann ein
Teil des ersten Arguments zurückgegeben werden.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
fmlexpr(1F) (Form and Menu Language Interpreter) fmlexpr(1F)
BEISPIELE
1. Zu der Variablen a 1 addieren:
`fmlexpr $a + 1 | set -l a`
2. Soll $a gleich /usr/abc/file oder file sein:
fmlexpr $a : '.*/\(.*\)' \| $a
Dieses Beispiel gibt das letzte Segment eines Pfadnamens zurück
(zum Beispiel file). Achten Sie auf ein alleinstehendes / als
Argument: fmlexpr interpretiert dieses Zeichen als Operator für
die Division.
3. Eine deutlichere Darstellung von Beispiel 2.
fmlexpr //$a : '.*/\(.*\)'
Durch Hinzufügen der Zeichen // wird der Operator für die Division
eindeutig, da hierdurch der linke Ausdruck nicht mehr als Operator
für die Division interpretiert werden kann. Der gesamte Ausdruck
wird vereinfacht.
4. Die Anzahl der Zeichen in $VAR zurückgeben.
fmlexpr $VAR : .*
DIAGNOSE
Als Nebeneffekt der Ausdrucksbewertung gibt fmlexpr die folgenden
Endewerte zurück:
0 Wenn der Ausdruck weder null noch 0 ist (d. h. TRUE)
1 Wenn der Ausdruck null oder 0 ist (d. h. FALSE)
2 Für ungültige Ausdrücke (d. h. FALSE).
syntax error Für Operator-/Operandenfehler.
non-numeric argument Falls versucht wurde, eine arithmetische
Operation für eine solche Zeichenkette
durchzuführen.
Bei Syntaxfehlern und nichtnumerischen Fehlern wird eine Fehlermeldung
an der aktuellen Cursor-Position ausgegeben. Verwenden Sie refresh, um
den Bildschirm zu aktualisieren.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
fmlexpr(1F) (Form and Menu Language Interpreter) fmlexpr(1F)
HINWEISE
Nachdem Argumente von FMLI verarbeitet wurden, kann fmlexpr Operatoren
und Operanden nur noch durch den Wert voneinander unterscheiden. Wenn
$a ein = ist, sieht das Kommando
fmlexpr $a = '='
folgendermaßen aus:
fmlexpr = = =
Die Argumente werden an fmlexpr übergeben und werden alle als der Ope-
rator = interpretiert. Das folgende Kommando wird erfolgreich ausge-
führt, und TRUE wird zurückgegeben:
fmlexpr X$a = X=
SIEHE AUCH
ed(1), expr(1), sh(1), set(1F).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98