版本函数参考

EAPI 7 引入了三个用于常见版本号操作的命令

版本字符串

这些函数支持由版本组件和(可能为空的)版本分隔符交织而成的任意版本字符串。

版本组件可以由纯数字 ([0-9]+) 或纯大写和小写字母 ([A-Za-z]+) 组成。版本分隔符可以是任何其他字符的字符串 ([^A-Za-z0-9]+),也可以出现在字母序列和数字序列之间的过渡处,反之亦然。在后一种情况下,版本分隔符为空字符串。

版本从左到右进行处理,每个后续组件从 1 开始分配编号。这些组件要么在版本分隔符上分割,要么在数字和字母之间的边界上分割(在这种情况下,组件之间的分隔符为空)。版本分隔符从 1 开始分配编号,用于第一个和第二个组件之间的分隔符。作为特殊情况,如果版本字符串以分隔符开头,则将其分配索引 0。

示例

类型 s c s c s c s c s c
索引 0 1 1 2 2 3 3 4 4 5
1.2.3 1 . 2 . 3
1.2b_alpha4 1 . 2 b _ alpha 4
.11. . 11 .

范围

范围可以指定为 m 表示第 m 个版本组件,m- 表示从第 m 个开始的所有组件,或 m-n 表示从第 m 个开始到第 n 个(包含)的组件。如果范围超出版本字符串范围,则会静默截断。

函数

函数 用法 描述
ver_cut range [version]

打印版本字符串的子字符串,该子字符串包含由 range 定义的组件及其之间的版本分隔符。如果指定,则处理 version,否则处理 ${PV}

有关版本和范围的语法,请参见引言部分。

ver_rs range repl [range repl...] [version]

在用 repl(字符串)替换 range 处的指定版本分隔符后,打印版本字符串。可以指定多个 range repl 对。如果指定,则处理 version,否则处理 ${PV}

有关版本和范围的语法,请参见引言部分。

ver_test [v1] op v2

检查关系 v1 op v2 是否为真。如果未指定 v1,则默认为 ${PVR}op 可以是 -gt-ge-eq-ne-le-lt。这些运算符具有与 test(1) 中相同的含义,即如果 v1 大于、大于或等于、等于、不等于、小于或等于或小于 v2,则比较为真。

版本 v1v2 必须符合 PMS 版本语法(可选修订部分),并且比较根据 PMS 中指定的算法 进行。