: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 Bedingung
[Anweisungen]
[ : ELSE ]
[Weitere Anweisungen]
: ENDIF
Parameter
-
:IF
Startet einen Bedingungsblock -
Bedingung
Mathematischer Ausdruck, der bestimmt, ob die Anweisungen im bedingten Block ausgeführt werden
Format: Script-Literale, Script-Variablen, Script-Funktionen oder Zahlen, mit den möglichen Ergebnissen true oder false -
Anweisungen
Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung true ist
Format: Script-Anweisung -
:ELSE
Startet einen Zweig, der ausgeführt wird, wenn die Bedingung false ist -
Weitere Anweisungen
Eine oder mehrere Script-Anweisungen, die ausgeführt werden sollen, wenn die Bedingung false ist
Format: Script-Anweisung
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 oder OR-Bedingungen in der folgenden 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 String-Vergleichen nicht berücksichtigt. Deshalb ist die Länge von leeren Strings 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 einem String hinaus.
Eine Bedingung enthält einen der folgenden Vergleichsoperatoren:
Operator |
Kurzform |
Regel |
---|---|---|
= |
EQ |
Der Ausdruck ist "true", wenn mindestens ein Vergleichswert dem Wert entspricht. |
<> |
NE |
Der Ausdruck ist "true", wenn keiner der Vergleichswerte gleich dem Wert ist. |
< |
LT |
Der Ausdruck ist "true", wenn ein Vergleichswert die definierte Bedingung 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 String-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 Strings 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: