У меня есть список, какКак проверить смежные значения в списке tcl?
set val [ list Fa2/0/1 Fa2/0/24 Gi1/0/13 Gi1/0/23 Gi1/1/1 Gi2/0/1 ]
теперь я хочу, чтобы положить его в петлю и выполнить несколько команд по каждому диапазону
как
set number 0
set pattern 0
foreach n $val {
if {$pattern == 0} {
set current $n
regexp {(.*/)(\d+)} $n - pattern number
continue
}
regexp {(.*/)(\d+)} $n - match1 match2
if {$match1 == $pattern} {
#puts "someproc $current - match2"
}
}
Я не могу получить эту работу в выход должен быть как для пары ech, либо для сингулярного значения найдено
someproc Fa2/0/1 - 24
someproc Gi1/0/13 - 23
someproc Gi1/1/1 - 1 #for singular values
someproc Gi2/0/1 - 1
EDIT: У меня есть список таких данных, как:
Gi3/0/1 Fa2/0/1 Fa2/0/24 Gi1/0/13 Gi1/0/23 Gi1/1/1 Gi2/0/1 Te1/0/1
, где вы можете сказать, каждый данные может быть типа Gi3/0/
или Gi2/0/
или Fa2/0/
этих reperesent некоторого диапазона портов на сиг swicth.Now для каждого типа мне нужно для выполнения какой-либо команды для диапазона. Получив вышеприведенный список, я могу получить.
somecommand Gi3/0/1 - 1 # there is only one `Gi3/0/` with number 1.
somecommand Fa2/0/1 - 24 # range of `Fa2/0/` is 1 to 24
аналогично,
somecommand Gi1/0/13 - 23
somecommand Gi1/1/1 - 1
and so on
Спасибо большое @ GIC82 – munish
Что такое шаблон ($ pattern, L), я не понимаю, что такое L и H в этом ассоциативном массиве. – munish
Это просто переменные или метки, которые я могу сказать (не ключевые слова). Я использовал их для получения значений нижнего (L) и высшего (H) диапазонов одного и того же шаблона. В массивах мы можем иметь несколько ключей, разделенных запятой. – GIC82