2

Почему я получаю только "кот", когда я бегу

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

??

Разве это не должно печатать "курицу", "собаку" и "кошку"?

1 ответ1

4

Индексы для массивов awk могут быть числовыми (как в традиционном массиве) или строками (ассоциативный массив). Так что вы можете сделать

animal[1] = "cat"

или же

animal["one"] = cat

Тем не менее, если вы делаете

animal[one] = cat

awk попытается найти переменную с именем 'one', потерпит неудачу и эффективно сделает это:

animal[""] = cat

Таким образом, в вашей программе все три животных назначены animal[""] , так что в итоге вы получите только один элемент в вашем массиве.

Если вы поместите one , two и three в кавычки, ваш код будет работать так, как вы ожидаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .