Первая проблема в том, что вы не создаете список внутри списка.
Рассмотрим эту строку:
@{ICMPDU} ICMPDU @{ICMPDU_Val}
Это создаст список, состоящий из четырех значений: ICMPDU
, Yes
, 1
и 2
. Это потому, что когда @
используется справа от ключевого слова, список расширяется, и каждый элемент становится аргументом для ключевого слова.
Из руководства пользователя Framework Framework (выделение добавлено):
Когда переменная используется в качестве скаляра, например, $ {EXAMPLE}, ее значение будет использоваться как есть. Если значение переменной является списком или подобным списку, его также можно использовать в качестве переменной списка, например @ {EXAMPLE}. В этом случае отдельные элементы списка передаются как аргументы отдельно.
Если вы хотите, чтобы список был вторым элементом списка, вы должны использовать $
вместо @
при определении переменной:
@{ICMPDU} ICMPDU ${ICMPDU_Val}
Вторая проблема заключается в том, что синтаксис для доступа к элементам массива работает только за скобками, если у вас есть один индекс. Если вам нужно что-то более сложное, например, [1][2]
, вам нужно использовать расширенный синтаксис переменной и перемещать индексы внутри фигурных скобок.
Например, ${ICMPDU[1][2]}