

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use construções condicionais em AWSTOE
<a name="toe-conditional-constructs"></a>

Os constructos condicionais realizam diferentes ações no documento do componente dependendo de a expressão condicional especificada ser avaliada como `true` ou `false`. Você pode usar o constructo `if` para controlar o fluxo de execução no documento do componente.

## Constructo “if”
<a name="toe-conditional-if"></a>

Você pode usar o constructo `if` para avaliar se uma etapa deve ser executada ou não. Por padrão, quando a expressão condicional `if` é avaliada como `true`, o AWSTOE executa a etapa e, quando a condição é avaliada como `false`, o AWSTOE pula a etapa. Se uma etapa for ignorada, ela poderá ser tratada como bem-sucedida quando o AWSTOE avaliar se a fase e o documento foram executados com êxito.

**nota**  
Uma instrução `if` só é avaliada uma vez, mesmo que a etapa acione uma reinicialização. Se uma etapa for reiniciada, ela reconhecerá que a instrução `if` já foi avaliada e continuará de onde parou.

**nota**  
As expressões condicionais suportam uma profundidade máxima de aninhamento de 4 níveis. Se você aninhar operadores lógicos (`and`,`or`,`not`) além de 4 níveis de profundidade, a validação falhará.

### Sintaxe
<a name="toe-conditional-if-syntax"></a>

```
if:
  <conditional expression>:
    [then: <step action>]
    [else: <step action>]
```


| Nome da chave | Obrigatório | Description | 
| --- | --- | --- | 
| Expressão condicional | Sim | A expressão condicional pode conter exatamente um dos seguintes tipos de operador no nível superior.+  **Operador de comparação** — Para obter uma lista de operadores de comparação e informações sobre como eles funcionam em documentos de AWSTOE componentes, consulte[Operadores de comparação](toe-comparison-operators.md). <br />+  **Operador lógico**: os operadores lógicos incluem `and`, `or` e `not` e operam em um ou mais operadores de comparação. Para obter mais informações sobre como os operadores lógicos funcionam em documentos do componentes do AWSTOE , consulte [Operadores lógicos](toe-logical-operators.md). <br />Se sua expressão precisar satisfazer várias condições, use um operador lógico para especificar suas condições. | 
| then | Não | Define a ação a ser executada se a expressão condicional for avaliada como `true`. | 
| else | Não | Define a ação a ser executada se a expressão condicional for avaliada como `false`. | 
| ações de etapa | Condicional | Ao usar `then` ou `else`, você deve especificar uma das seguintes ações de etapa:+  **Anular**: o AWSTOE marca a etapa como com falha. <br />+  **Executar**: o AWSTOE executa a etapa. <br />+  **Ignorar**: o AWSTOE pula a etapa.  | 

**Exemplo 1: instalar um pacote**  
As etapas de exemplo a seguir de um documento de AWSTOE componente usam operadores lógicos para testar um valor de parâmetro e executar os comandos apropriados do gerenciador de pacotes para instalar um aplicativo se o pacote for descompactado.

```
    - name: InstallUnzipAptGet
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'apt-get'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo apt-get update
            - sudo apt-get install -y unzip

    - name: InstallUnzipYum
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'yum'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo yum install -y unzip

    - name: InstallUnzipZypper
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'zypper'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo zypper refresh
            - sudo zypper install -y unzip
```

**Exemplo 2: ignorar uma etapa**  
O exemplo a seguir mostra duas maneiras de pular uma etapa. Uma usa um operador lógico e a outra usa um operador de comparação com a ação de etapa `Skip`.

```
# Creates a file if it does not exist using not
- name: CreateMyConfigFile-1
  action: ExecuteBash
  if:
    not:
      fileExists: '/etc/my_config'
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'

# Creates a file if it does not exist using then and else
- name: CreateMyConfigFile-2
  action: ExecuteBash
  if:
    fileExists: '/etc/my_config'
    then: Skip
    else: Execute
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'
```