

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWSTOE 구성 요소 문서에서 비교 연산자 사용
<a name="toe-comparison-operators"></a>

다음 비교 연산자를 **[Assert](toe-action-modules.md#action-modules-assertion)** 작업 모듈 및 [if 구문구문](toe-conditional-constructs.md#toe-conditional-if)를 사용하는 조건식과 함께 사용할 수 있습니다. 비교 연산자는 예를 들어 `stringIsEmpty`와 같은 단일 값으로 작동하거나 기준 값을 두 번째 값(변수 값)과 비교하여 조건식이 `true` 또는 `false`로 평가되는지 여부를 결정할 수 있습니다.

두 값에 대해 비교가 작동하는 경우 두 번째 값은 체인 변수일 수 있습니다.

다른 유형의 값을 비교할 때 비교 전에 다음과 같은 값 변환이 발생할 수 있습니다.
+ 숫자 비교의 경우 변수 값이 문자열인 경우는 평가 전에 문자열을 숫자로 AWSTOE 변환합니다. 변환이 불가능한 경우 비교에서 `false`를 반환합니다. 예를 들어 변수 값이 `"1.0"`인 경우 변환이 작동하지만 변수 값이 `"a10"`인 경우 변환이 실패합니다.
+ 문자열 비교의 경우 변수 값이 숫자인 경우는 평가 전에 문자열로 AWSTOE 변환합니다.

## 문자열 비교
<a name="toe-compare-strings"></a>

다음 비교 연산자는 문자열을 사용하여 값을 비교하거나, 스페이스 또는 빈 문자열을 테스트하거나, 입력 값을 정규식 패턴과 비교합니다. 문자열 비교에서는 대/소문자를 구분하지 않으며 문자열 입력의 시작 또는 끝에 있는 스페이스를 제거하지 않습니다.

**문자열 비교 연산자**
+ [stringIsEmpty](#stringIsEmpty)
+ [stringIsWhitespace](#stringIsWhitespace)
+ [stringEquals](#stringEquals)
+ [stringLessThan](#stringLessThan)
+ [stringLessThanEquals](#stringLessThanEquals)
+ [stringGreaterThan](#stringGreaterThan)
+ [stringGreaterThanEquals](#stringGreaterThanEquals)
+ [patternMatches](#patternMatches)

**stringIsEmpty**  
지정된 문자열에 문자가 없는 경우 `stringIsEmpty` 연산자가 `true`를 반환합니다. 예제:  

```
# 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'
```

**stringLessThanEquals**  
`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'
```

**stringGreaterThanEquals**  
`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`에 지정된 정규식 패턴과 일치하는지 테스트합니다. 비교에서 RE2 구문을 준수하는 [Golang regexp 패키지](https://pkg.go.dev/regexp)를 사용합니다. RE2 규칙에 대한 자세한 내용은 *GitHub*의 [Google / re2](https://github.com/google/re2/wiki/Syntax) 리포지토리를 참조하세요.  
다음 예제에서는 `true`를 반환하는 패턴 일치를 보여줍니다.  

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

## 숫자 비교
<a name="toe-compare-numbers"></a>

다음 비교 연산자는 숫자에 적용됩니다. 이러한 연산자에 대해 제공된 값은 YAML 사양에 따라 다음 유형 중 하나여야 합니다. 숫자 비교에 대한 지원은 예를 들어 [func(\$1Float) Cmp](https://pkg.go.dev/math/big#Float.Cmp)와 같은 golang big 패키지 비교 연산자를 사용합니다.
+ Integer
+ Float(-1.7e\$1308\$1\$11.7e\$1308의 숫자를 지원하는 float64 기반)
+ 다음 정규식 패턴과 일치하는 문자열: `^[-+]?([0-9]+[.])?[0-9]+$`

**숫자 비교 연산자**
+ [numberEquals](#numberEquals)
+ [numberLessThan](#numberLessThan)
+ [numberLessThanEquals](#numberLessThanEquals)
+ [numberGreaterThan](#numberGreaterThan)
+ [numberGreaterThanEquals](#numberGreaterThanEquals)

**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'
```

**numberLessThanEquals**  
`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'
```

**numberGreaterThanEquals**  
`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
```

## 파일 확인
<a name="toe-check-files"></a>

다음 비교 연산자는 파일 해시를 확인하거나 파일 또는 폴더가 있는지 확인합니다.

**파일 및 폴더 연산자**
+ [binaryExists](#binaryExists)
+ [fileExists](#fileExists)
+ [folderExists](#folderExists)
+ [fileMD5Equals](#fileMD5Equals)
+ [fileSHA1Equals](#fileSHA1Equals)
+ [fileSHA256Equals](#fileSHA256Equals)
+ [fileSHA512Equals](#fileSHA512Equals)

**binaryExists**  
현재 경로에서 애플리케이션을 사용할 수 있는지 테스트합니다. 예제:  

```
binaryExists: 'foo'
```
Linux 및 macOS 시스템에서 *foo*라는 애플리케이션의 경우 bash 명령 **type *foo* >/dev/null 2>&1**와 동일하게 작동합니다. 여기서 **\$1? == 0**은 성공적인 비교를 나타냅니다.  
Windows 시스템에서 *foo*라는 애플리케이션의 경우 PowerShell 명령 **& C:\$1Windows\$1System32\$1where.exe /Q *foo***와 동일하게 작동합니다. 여기서 **\$1LASTEXITCODE = 0**은 성공적인 비교를 나타냅니다.

**fileExists**  
파일이 지정된 경로에 존재하는지 테스트합니다. 절대 또는 상대 경로를 제공할 수 있습니다. 지정한 위치가 존재하고 파일인 경우 비교는 `true`로 평가됩니다. 예제:  

```
fileExists: '/path/to/file'
```
Linux 및 macOS 시스템에서는 bash 명령 **-d */path/to/file***와 동일하게 작동합니다. 여기서 **\$1? == 0**은 성공적인 비교를 나타냅니다.  
Windows 시스템에서는 PowerShell 명령 **Test-Path -Path '*C:\$1path\$1to\$1file*' -PathType 'Leaf'**와 동일하게 작동합니다.

**folderExists**  
폴더가 지정된 경로에 존재하는지 테스트합니다. 절대 또는 상대 경로를 제공할 수 있습니다. 지정한 위치가 존재하고 폴더인 경우 비교는 `true`로 평가됩니다. 예제:  

```
folderExists: '/path/to/folder'
```
Linux 및 macOS 시스템에서는 bash 명령 **-d */path/to/folder***와 동일하게 작동합니다. 여기서 **\$1? == 0**은 성공적인 비교를 나타냅니다.  
Windows 시스템에서는 PowerShell 명령 **Test-Path -Path '*C:\$1path\$1to\$1folder*' -PathType 'Container'**와 동일하게 작동합니다.

**fileMD5Equals**  
파일의 MD5 해시가 지정된 값과 동일한지 테스트합니다. 예제:  

```
fileMD5Equals: '<MD5Hash>'
path: '/path/to/file'
```

**fileSHA1Equals**  
파일의 SHA1 해시가 지정된 값과 동일한지 테스트합니다. 예제:  

```
fileSHA1Equals: '<SHA1Hash>'
path: '/path/to/file'
```

**fileSHA256Equals**  
파일의 SHA256 해시가 지정된 값과 동일한지 테스트합니다. 예제:  

```
fileSHA256Equals: '<SHA256Hash>'
path: '/path/to/file'
```

**fileSHA512Equals**  
파일의 SHA512 해시가 지정된 값과 동일한지 테스트합니다. 예제:  

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