:IF... :ELSE... :ENDIF
Verwenden Sie die Script-Anweisungen :IF und :ENDIF, um einen Bedingungsblock in Ihrem Script zu erstellen. Das Script analysiert einen Ausdruck und führt Anweisungen aus, die in den Block geschrieben wurden, wenn eine bestimmte Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, fährt das Script entweder mit der nächsten Zeile nach dem Bedingungsblock fort oder führt gegebenenfalls :ELSE-Anweisungen aus.
Syntax
:IF Condition
[Statements]
[:ELSE]
[Other Statements]
:ENDIF
Parameter
- :IF
Startet einen Bedingungsblock - Condition
Mathematischer Ausdruck, der bestimmt, ob die Anweisungen im Bedingungsblock ausgeführt werden sollen
Format: Script-Literale, Script-Variablen, Script-Funktionen oder Zahlen, mit den möglichen Ergebnissen wahr oder falsch - Statements
Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung erfüllt ist
Format: Script-Statement - :ELSE
Startet einen Zweig, der ausgeführt wird, wenn die Bedingung falsch ist - Other Statements
Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung falsch ist
Format: Script-Statement
Hinweise:
-
Sie müssen die Script-Variablen definieren, die Sie in einer Bedingung vor dem Bedingungsblock verwenden.
-
Verwenden Sie OR als Schlüsselwort, um eine Bedingung mit mehreren Werten zu verknüpfen oder um mehrere Bedingungen zu verknüpfen. Schreiben Sie die OR-Bedingungen in die folgende Struktur:
WertVergleichsoperatorVergleichswert[OR Vergleichswert...]
Beispiel: :IF &DEP# = "EDP" OR "AE" -
Sie können bis zu 13 ORs in einer Bedingung verwenden.
-
Sie müssen keine :ELSE-Anweisungen einfügen.
-
Sie können :IF-Blöcke bis zu einer unbegrenzten Tiefe verschachteln.
-
Abschließende Leerzeichen werden in Zeichenketten-Vergleichen nicht berücksichtigt. Deshalb ist die Länge von leeren Zeichenketten nicht relevant.
-
Führende Nullen werden nur bei numerischen Vergleichen ignoriert.
Wichtig! Die :IF-Anweisung erkennt keine Unterschiede in Zeichen über die ersten 1024 Zeichen einer Zeichenkette hinaus.
Eine Bedingung enthält einen der folgenden Vergleichsoperatoren:
Operator |
Kurzform |
Regel |
---|---|---|
= |
EQ |
Der Ausdruck ist „wahr", wenn mindestens ein Vergleichswert dem Wert entspricht. |
<> |
NE |
Der Ausdruck ist „wahr", wenn keiner der Vergleichswerte gleich dem Wert ist. |
< |
LT |
Der Ausdruck ist „wahr", wenn ein Vergleichswert den angegebenen Begriff erfüllt. |
> |
GT |
|
<= |
GT |
|
>= |
GE |
Beispiele
:set &a= 'a '
:set &b= 'a'
:if &a = &b
:print 'true'
:endif
Weisen beide Vergleichswerte der Bedingung einen numerischen Wert auf (Datentyp signed, unsigned oder float), so wird numerisch vergleichen. In allen anderen Fällen findet ein Zeichenketten-Vergleich statt.
Die folgende Bedingung ist wahr:
:IF "0" = "0"
Ein alphanumerischer Vergleich findet statt, wenn es keine numerischen Werte gibt.
Die folgende Bedingung ist falsch:
:IF "0" = "abc"
Beim Vergleich von Zeichenfolgen wird nicht deren Länge geprüft. Die folgende Bedingung ist wahr, da S im Alphabet vor U steht:
:IF "Smith" < "UX"
Bei Bedingungen, die mehrere ODER-Schlüsselwörter beinhalten, hängt das Verhalten vom Benutzer ab.
In den folgenden Beispielen muss einer der Werte zutreffen, damit die Bedingung erfüllt wird.
:IF&WD# = "MON" OR "TUE" OR "WED"
Die folgende Bedingung ist nur erfüllt, wenn die Variable keinem der drei Werte entspricht.
:IF&WD# <> "THU" OR "FRI" OR "SAT"
Siehe auch: