Comportamento estranho do awk

2

Por que recebo apenas "gato" quando corro

awk 'BEGIN {
  animal[three] = "hen"
  animal[two]   = "dog"
  animal[one]   = "cat"
  for (var in animal) {
    print animal[var]
  }
}

??

Ele não deve imprimir "galinha", "cachorro" e "gato"?

    
por anilomjf 09.04.2014 / 12:55

1 resposta

4

Índices para arrays awk podem ser numéricos (como em uma matriz tradicional) ou strings (uma matriz associativa). Então você pode fazer

animal[1] = "cat"

ou

animal["one"] = cat

No entanto, se você fizer

animal[one] = cat

o awk tentará encontrar uma variável chamada 'one', falhar e efetivamente fazer isso:

animal[""] = cat

Então, no seu programa, todos os três animais são atribuídos a animal[""] , então você acaba com apenas um elemento em sua matriz.

Se você colocar one , two e three entre aspas, seu código funcionará conforme o esperado.

    
por 09.04.2014 / 13:07

Tags