YAML possui três tipos de dados:
- Escalar
- Lista
- Dicionário
Tipo de dados escalares:
Escalar é um tipo de dados simples. Em YAML, escalar significa um valor simples para uma chave. O valor do escalar pode ser inteiro, flutuante, booleano e string. Os tipos de dados escalares são classificados em dois tipos de dados:
- Tipo de dados numéricos
- Corda
Tipo de dados numéricos
Existem três tipos de dados numéricos:
- Inteiro
- Números de ponto flutuante
- Booleanos
Um Tipo de dados inteiro pode ser decimal, octal ou hexadecimal.
Por exemplo:
--- age: 12345 octalexample: 012345 hexaexample: 0x12d4
Aqui, o valor hexadecimal é indicado por 0x e o valor octal é indicado por zero à esquerda. Quando executamos este documento em nosso script python, a seguinte saída será gerada:
age: 12345 octalexample: 9946 hexaexample: 4820
O valor de ponto flutuante pode ser fixo e exponencial.
Por exemplo:
--- height: 180.0 exp: 12.3015e+05
Quando avaliarmos a entidade acima, obteremos o seguinte:
height: 180.0 exp: 1230150.0
A Valor booleano pode ser Verdadeiro/Falso ou Sim/Não ou Ativado/Desativado.
formato de string
Por exemplo:
--- boolenval1: True booleanval2: False fan: On light: Off
Corda
As strings YAML são Unicode. No exemplo a seguir, definiremos uma string simples, sem usar aspas.
Exemplo:
np.onde
--- str1: this is a normal string
Quando processarmos isso, a seguinte saída será gerada:
str1: this is a normal string
Agora, definiremos uma string com uma sequência de escape. A sequência a seguir contém um caractere especial (qualquer coisa diferente de alfanumérico), portanto contém aspas duplas.
--- str1: 'the cost is 390 ' str2: the cost is 390
Quando processarmos isso, a seguinte saída será gerada:
str1: the cost is 390 str2: the cost is 390
Durante o arquivo YAML, podemos definir o valor de uma variável de dados como nulo. Posteriormente, podemos escrever um programa para alterar o valor de null para qualquer outro valor.
--- str1: null str2: ~
Nosso programa processa isso como:
str1: none str2: none
Em YAML, podemos escrever uma string multilinha em uma única linha usando o símbolo >. Neste, um caractere de nova linha ( ) será ignorado.
Exemplo:
str: > this is a multi-line string it spans more than one line
A string acima será interpretada sem as novas linhas da seguinte forma:
str : this is a multi-line string it spans more than one line
Em YAML, podemos escrever uma string multilinha em uma nova linha usando | símbolo. Neste, o caractere de nova linha ( ) será incluído.
Exemplo:
str: | this is a multi-line string it spans more than one line
Então vemos as novas linhas onde elas estão no documento da seguinte forma:
str : this is a multi-line string it spans more than one line
Listas
Podemos definir a lista em uma única linha da seguinte forma:
--- items: [6, 7, 8, 9, 10] name: [six, seven, eight, nine, ten]
Este estilo é conhecido como estilo de bloco. Podemos colocar a lista acima em várias linhas da seguinte forma:
--- items: - 6 - 7 - 8 name: - 'six' - 'seven' - 'eight' - 'nine'
Este estilo é conhecido como estilo de fluxo. Uma lista que contém objetos complexos precisa de múltiplas linhas.
--- items: - values: value1: value 2: value 3: - other values: key: value
Qualquer número de valores YAML válidos pode conter uma matriz. Mas o valor de uma lista não pode ser do mesmo tipo.
Dicionários
Se quisermos escrever um arquivo YAML complexo que contenha uma estrutura de dados complexa, usaremos dicionários. É uma coleção de pares chave: valor e cada um dos pares chave: valor pode ser aninhado com várias opções.
Exemplo 1:
--- student1: 'john' hobbies: - music - reading - dancing
No exemplo acima, student é a primeira chave e john é o valor. Hobbies são a segunda chave, mas estão aninhados, o que significa que contém uma lista de valores. O valor da chave pode novamente ser um par chave:valor, que veremos no próximo exemplo.
Exemplo 2:
student2: fatherName: 'William' motherName: 'Marry' subjectDetails: subject1: 70 subject2: 100
O subjectDetails mostra uma chave, e o valor dessa chave é uma lista de pares chave:valor. fatherName, motherName e subjectName são as chaves. Onde subjectName key contém uma lista de pares chave: valor e subject1 e subject2 são as chaves para os valores 70 e 100.
loop for em shell script