PML 2 插件开发指南
插件系统运算符说明
本文档介绍 PML 2 插件系统的运算符。
PML 2 插件支持值比较运算符和逻辑运算符, 部分运算符有两种形式。
1. 值比较运算符
PML 2 目前支持以下值比较运算符:
| 运算符 | 另写 | 说明 | 示例 |
|---|---|---|---|
-eq | == | 判断运算符左右两边的值是否相等。使用object.Equals进行比较。 | {{ctx.data.version}} == "26.2.0"{{ctx.data.version}} -eq "26.2.0" |
-ne | != | 判断运算符左右两边的值是否不等。使用object.Equals的取反结果。 | {{ctx.data.version}} != "26.2.0"{{ctx.data.version}} -ne "26.2.0" |
-gt | > | 判断运算符左边的值是否大于右边的值。 | {{ctx.variables.count}} > 5{{ctx.variables.count}} -gt 5 |
-lt | < | 判断运算符左边的值是否小于右边的值。 | {{ctx.variables.count}} < 5{{ctx.variables.count}} -lt 5 |
-ge | >= | 判断运算符左边的值是否大于等于右边的值。 | {{ctx.variables.count}} >= 5{{ctx.variables.count}} -ge 5 |
-le | <= | 判断运算符左边的值是否小于等于右边的值。 | {{ctx.variables.count}} <= 5{{ctx.variables.count}} -le 5 |
-like | 无 | 判断运算符左边的值是否匹配运算符右边的通配符表达式。* 匹配任意长度的字符序列 (包含空序列) , ? 匹配单个字符, 其余字符按字面量处理; 整串匹配, 大小写不敏感。 | {{ctx.data.os}} -like "Windows *" |
-notlike | 无 | 判断运算符左边的值是否不匹配运算符右边的通配符表达式, 即 -like 的取反。 | {{ctx.data.os}} -notlike "Windows *" |
-match | 无 | 判断运算符左边的值是否匹配运算符右边的正则表达式 (.NET 语法) 。为子串匹配, 无需在首尾书写 ^ / $; 大小写不敏感。正则表达式非法时返回 false。 | {{ctx.data.os}} -match "Windows \d+" |
-notmatch | 无 | 判断运算符左边的值是否不匹配运算符右边的正则表达式, 即 -match 的取反。 | {{ctx.data.os}} -notmatch "Windows \d+" |
-contains | 无 | 如果运算符左右两边都为字符串, 则判断运算符左边的值是否包含运算符右边的值; 如果运算符左边为集合, 则判断运算符左边的集合是否包含运算符右边的值。(x ∋ y 或 x ⊇ y) | {{ctx.data.os}} -contains "Windows" |
-notcontains | 无 | 如果运算符左右两边都为字符串, 则判断运算符左边的值是否不包含运算符右边的值; 如果运算符左边为集合, 则判断运算符左边的集合是否不包含运算符右边的值。(x ∌ y 或 x ⊅ y) | {{ctx.data.os}} -notcontains "Windows" |
-in | 无 | 如果运算符左右两边都为字符串, 则判断运算符左边的值是否包含于运算符右边的值; 如果运算符右边为集合, 则判断运算符左边的值是否包含于运算符右边的集合。(x ∈ y 或 x ⊆ y) | "Windows" -in {{ctx.data.os}} |
-notin | 无 | 如果运算符左右两边都为字符串, 则判断运算符左边的值是否不包含于运算符右边的值; 如果运算符右边为集合, 则判断运算符左边的值是否不包含于运算符右边的集合。(x ∉ y 或 x ⊄ y) | "Windows" -notin {{ctx.data.os}} |
-like / -notlike 使用通配符语义, -match / -notmatch 使用正则表达式语义, 两者不能混用。
例如要匹配“Windows 后跟若干数字”应写作 {{ctx.data.os}} -match "Windows \d+";
写成 -like "Windows \d+" 时 \d 会被当作字面量字符。若出现了不支持的运算符, 该条件比较总是返回false。
部分运算符参考了 Powershell 脚本的语法, 您可以在此处查看 Powershell 的运算符。
2. 逻辑运算符
PML 2 目前支持以下逻辑运算符:
| 运算符 | 另写 | 说明 | 示例 |
|---|---|---|---|
-and | && | 计算运算符左右表达式的逻辑与。如果x和y的计算结果都为true, 则x && y的结果为true; 否则结果为false。如果x的计算结果为false, 则不会计算y。 | {{ctx.data.version}} -eq "26.2.0" && {{ctx.data.os}} -contains "Windows" |
-or | || | 计算运算符左右表达式的逻辑或。如果x或y中有一个计算结果为true, 则x || y的结果为true。否则, 结果为false。如果x计算结果为true, 则不计算y。 | {{ctx.data.version}} -eq "26.2.0" || {{ctx.data.os}} -notcontains "Windows" |
-xor | ^|或^ | 计算运算符左右表达式的逻辑异或。如果x和y的计算结果不同, 则x ^| y的结果为true。否则, 结果为false。 | {{ctx.data.version}} -eq "26.2.0" ^| {{ctx.data.os}} -contains "Windows" |
前往MSDN以了解更多有关逻辑运算符的内容。
3. 算术运算符
PML 2 目前支持以下算术运算符:
| 运算符 | 说明 | 示例 |
|---|---|---|
+ | 加法运算符, 用于计算运算符左右两边的值的和。 | {{ctx.variables.count}} + 5 |
- | 减法运算符, 用于计算运算符左右两边的值的差。 | {{ctx.variables.count}} - 5 |
* | 乘法运算符, 用于计算运算符左右两边的值的积。 | {{ctx.variables.count}} * 5 |
/ | 除法运算符, 用于计算运算符左右两边的值的商。 | {{ctx.variables.count}} / 5 |
% | 取模运算符, 用于计算运算符左右两边的值的余数。 | {{ctx.variables.count}} % 5 |
// | 整除运算符, 用于计算运算符左右两边的值的商的整数部分。 | {{ctx.variables.count}} // 5 |
**或^ | 幂运算符, 用于计算运算符左边的值的右边的值次方。 | {{ctx.variables.count}} ** 5 |