在 AWSTOE 组件文档中使用比较运算符 - EC2Image Builder

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AWSTOE 组件文档中使用比较运算符

您可以将以下比较运算符与断言操作模块和使用条件表达式一起使用如果构造。例如,比较运算符可以对单个值进行运算stringIsEmpty,也可以将基准值与第二个值(变量值)进行比较,以确定条件表达式的计算结果是否为truefalse

如果对两个值进行比较,则第二个值可以是链式变量。

比较不同类型的值时,在比较之前可能会进行以下值转换:

  • 对于数值比较,如果变量值是字符串,则在计算之前将字符串 AWSTOE 转换为数字。如果无法进行转换,则返回比较false。例如,如果变量值为"1.0",则转换有效,但如果变量值为,"a10"则转换失败。

  • 对于字符串比较,如果变量值是一个数字,则在求值之前将其 AWSTOE 转换为字符串。

比较字符串

以下比较运算符使用字符串来比较值、测试空格或空字符串,或者将输入值与正则表达式模式进行比较。字符串比较不区分大小写,也不会从字符串输入的开头或结尾修剪空格。

stringIsEmpty

true如果指定的字符串不包含任何字符,则该stringIsEmpty运算符返回。例如:

# Evaluates to true stringIsEmpty: "" # Evaluates to false stringIsEmpty: " " # Evaluates to false stringIsEmpty: "Hello."
stringIsWhitespace

测试为指定的字符串是否仅stringIsWhitespace包含空格。例如:

# Evaluates to true stringIsWhitespace: " " # Evaluates to false stringIsWhitespace: "" # Evaluates to false stringIsWhitespace: " Hello?"
stringEquals

测试为stringEquals指定的字符串是否与value参数中指定的字符串完全匹配。例如:

# Evaluates to true stringEquals: 'Testing, testing...' value: 'Testing, testing...' # Evaluates to false stringEquals: 'Testing, testing...' value: 'Hello again.' # Evaluates to false stringEquals: 'Testing, testing...' value: 'TESTING, TESTING....' # Evaluates to false stringEquals: 'Testing, testing...' value: ' Testing, testing...' # Evaluates to false stringEquals: 'Testing, testing...' value: 'Testing, testing... '
stringLessThan

测试为指定的字符串stringLessThan是否小于value参数中指定的字符串。例如:

# Evaluates to true # This comparison operator isn't case sensitive stringlessThan: 'A' value: 'a' # Evaluates to true - 'a' is less than 'b' stringlessThan: 'b' value: 'a' # Evaluates to true # Numeric strings compare as less than alphabetic strings stringlessThan: 'a' value: '0' # Evaluates to false stringlessThan: '0' value: 'a'
stringLessThan等于

测试为指定的字符串stringLessThanEquals是否小于或等于value参数中指定的字符串。例如:

# Evaluates to true - 'a' is equal to 'a' stringLessThanEquals: 'a' value: 'a' # Evaluates to true - since the comparison isn't case sensitive, 'a' is equal to 'A' stringLessThanEquals: 'A' value: 'a' # Evaluates to true - 'a' is less than 'b' stringLessThanEquals: 'b' value: 'a' # Evaluates to true - '0' is less than 'a' stringLessThanEquals: 'a' value: '0' # Evaluates to false - 'a' is greater than '0' stringLessThanEquals: '0' value: 'a'
stringGreaterThan

测试为指定的字符串stringGreaterThan是否大于value参数中指定的字符串。例如:

# Evaluates to false - since the comparison isn't case sensitive, 'A' is equal to 'a' stringGreaterThan: 'a' value: 'A' # Evaluates to true - 'b' is greater than 'a' stringGreaterThan: 'a' value: 'b' # Evaluates to true - 'a' is greater than '0' stringGreaterThan: '0' value: 'a' # Evaluates to false - '0' is less than 'a' stringGreaterThan: 'a' value: '0'
stringGreaterThan等于

测试为指定的字符串stringGreaterThanEquals是否大于或等于value参数中指定的字符串。例如:

# Evaluates to true - 'a' is equal to 'A' stringGreaterThanEquals: 'A' value: 'a' # Evaluates to true - 'b' is greater than 'a' stringGreaterThanEquals: 'a' value: 'b' # Evaluates to true - 'a' is greater than '0' stringGreaterThanEquals: '0' value: 'a' # Evaluates to false - '0' is less than 'a' stringGreaterThanEquals: 'a' value: '0'
patternMatches

测试value参数中指定的字符串是否与为指定的正则表达式模式匹配。patternMatches比较使用符合语法的 Golang regexp 包。RE2有关RE2规则的更多信息,请参阅中的 google/re2 存储库。GitHub

以下示例显示了返回的模式匹配true

patternMatches: '^[a-z]+$' value: 'ThisIsValue'

比较数字

以下比较运算符适用于数字。根据YAML规范,为这些运算符提供的值必须是以下类型之一。对数值比较的支持使用 golang 大包比较运算符,例如:func (*Float) Cmp。

  • 整数

  • Float(基于 float64,它支持从 -1.7e+308 到 +1.7e+308 之间的数字)

  • 与以下正则表达式模式匹配的字符串:^[-+]?([0-9]+[.])?[0-9]+$

numberEquals

测试为指定的数字numberEquals是否等于value参数中指定的数字。以下所有示例比较都会返回true

# Values provided as a positive number numberEquals: 1 value: 1 # Comparison value provided as a string numberEquals: '1' value: 1 # Value provided as a string numberEquals: 1 value: '1' # Values provided as floats numberEquals: 5.0 value: 5.0 # Values provided as a negative number numberEquals: -1 value: -1
numberLessThan

测试为指定的数字numberLessThan是否小于value参数中指定的数字。例如:

# Evaluates to true numberLessThan: 2 value: 1 # Evaluates to true numberLessThan: 2 value: 1.9 # Evaluates to false numberLessThan: 2 value: '2'
numberLessThan等于

测试为指定的数字numberLessThanEquals是否小于或等于value参数中指定的数字。例如:

# Evaluates to true numberLessThanEquals: 2 value: 1 # Evaluates to true numberLessThanEquals: 2 value: 1.9 # Evaluates to true numberLessThanEquals: 2 value: '2' # Evaluates to false numberLessThanEquals: 2 value: 2.1
numberGreaterThan

测试为指定的数字numberGreaterThan是否大于value参数中指定的数字。例如:

# Evaluates to true numberGreaterThan: 1 value: 2 # Evaluates to true numberGreaterThan: 1 value: 1.1 # Evaluates to false numberGreaterThan: 1 value: '1'
numberGreaterThan等于

测试为指定的数字numberGreaterThanEquals是否大于或等于value参数中指定的数字。例如:

# Evaluates to true numberGreaterThanEquals: 1 value: 2 # Evaluates to true numberGreaterThanEquals: 1 value: 1.1 # Evaluates to true numberGreaterThanEquals: 1 value: '1' # Evaluates to false numberGreaterThanEquals: 1 value: 0.8

检查文件

以下比较运算符检查文件哈希值或检查文件或文件夹是否存在。

binaryExists

测试应用程序在当前路径中是否可用。例如:

binaryExists: 'foo'
注意

在 Linux 和 macOS 系统上,适用于名为的应用程序 foo,其工作原理与以下 bash 命令相同:type foo >/dev/null 2>&1,其中$? == 0表示比较成功。

在 Windows 系统上,适用于名为的应用程序 foo,其工作原理与$LASTEXITCODE = 0表示成功比较& C:\Windows\System32\where.exe /Q foo的 PowerShell 命令相同。

fileExists

测试指定路径上是否存在文件。您可以提供绝对路径或相对路径。如果您指定的位置存在并且是一个文件,则比较结果为。true例如:

fileExists: '/path/to/file'
注意

在 Linux 和 macOS 系统上,这与以下 bash 命令的工作原理相同:-d /path/to/file,其中$? == 0表示比较成功。

在 Windows 系统上,这与 PowerShell 命令的工作原理相同Test-Path -Path 'C:\path\to\file' -PathType 'Leaf'

folderExists

测试指定路径上是否存在文件夹。您可以提供绝对路径或相对路径。如果您指定的位置存在且为文件夹,则比较结果为。true例如:

folderExists: '/path/to/folder'
注意

在 Linux 和 macOS 系统上,这与以下 bash 命令的工作原理相同:-d /path/to/folder,其中$? == 0表示比较成功。

在 Windows 系统上,这与 PowerShell 命令的工作原理相同Test-Path -Path 'C:\path\to\folder' -PathType 'Container'

文件 MD5Equals

测试文件的MD5哈希值是否等于指定值。例如:

fileMD5Equals: '<MD5Hash>' path: '/path/to/file'
文件 SHA1Equals

测试文件的SHA1哈希值是否等于指定值。例如:

fileSHA1Equals: '<SHA1Hash>' path: '/path/to/file'
文件 SHA256Equals

测试文件的SHA256哈希值是否等于指定值。例如:

fileSHA256Equals: '<SHA256Hash>' path: '/path/to/file'
文件 SHA512Equals

测试文件的SHA512哈希值是否等于指定值。例如:

fileSHA512Equals: '<SHA512Hash>' path: '/path/to/file'