заполнение простого массива значениями имен переменных

Здесь выкладываем скрипты
Ответить
Sertik
Сообщения: 892
Зарегистрирован: 15 сен 2017, 09:03

18 мар 2020, 01:35

допустим есть такое:

:local a [:toaray "192.168.88.1, 10.10.10.5 , 16.10.11.2"]

Тут всё ясно, создаем простой массив a и заполняем его значениями ip.

А можно ли заполнить его значениями переменных типа так:

:local host1 192.168.88.1
:local host2 10.10.10.5
:local host3 16.10.11.2

:local a [:toaray $host1, $host2, $host3]

Оказывается фиг - так нельзя ... Рос не понимает такое ...
Как только не пробовал, удалось только так:

:local a ({});
:set ($a->0) $host1
:set ($a->1) $host2
:set ($a->2) $host3

Так можно. Но криво как то. Может есть более изящный рецепт ?


Чего не знаем то нагуглим
Sertik
Сообщения: 892
Зарегистрирован: 15 сен 2017, 09:03

19 мар 2020, 01:06

Сам спросил, сам ответил - сам затупил ...
Конечно можно гораздо проще:

:local a ({$host1; $host2; $host3})

:-)


Чего не знаем то нагуглим
Аватара пользователя
podarok66
Модератор
Сообщения: 3756
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

19 мар 2020, 19:51

Да можно и так:

Код: Выделить всё

[podarok66@RB750Gr3] > global ty {host1=192.168.88.1; host2=10.10.10.5; host3=16.10.11.2}
 
[podarok66@RB750Gr3] > :put ($ty->"host2")
10.10.10.5
Это смотря чего добиваешься от массива. Там можно вообще вложить приличную информацию в массив.Ну например:

Код: Выделить всё

[podarok66@RB750Gr3] >global ty {host1={gateway="192.168.88.1"; network="192.168.88.0/24"; addresses="DHCP"};host2={gateway="10.10.10.5"; network="10.10.10.0/26"; addresses="static"};host3={gateway="16.10.11.2"; network="192.168.101.0/24"; addresses="DHCP"};}   
 
[podarok66@RB750Gr3] > :put ($ty->"host2"->"network")
10.10.10.0/26

[podarok66@RB750Gr3] > :put ($ty->"host3")
addresses=DHCP;gateway=16.10.11.2;network=192.168.101.0/24



Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 892
Зарегистрирован: 15 сен 2017, 09:03

20 мар 2020, 17:55

Приветствую, podarok66 !

Вы пишите про ключевые массивы, и тем более многомерные, а мне нужен был простой, не ключевой, содержащий только ip-адреса, но чтобы он "заполнялся" значениями переменных.
то есть нельзя просто объявить массив и указать в нем значения числами, а нужно сделать так, чтобы значения в массив попали из переменных.
Вот и изврат такой был.

Он кстати так и не решен способом :local a ({$host1; $host2; $host3}), выяснился странный глюк роутер ос - об этом напишу позже, когда "раскопаю" в чём дело ...


Чего не знаем то нагуглим
Аватара пользователя
podarok66
Модератор
Сообщения: 3756
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

20 мар 2020, 20:19

Sertik, я вас категорически! А такой вариант чем не устраивает?

Код: Выделить всё

[podarok66@RB750Gr3] > :global host1 "192.168.88.1"
[podarok66@RB750Gr3] > :global host2 "10.10.10.5"            
[podarok66@RB750Gr3] > :global host3 "16.10.11.2"          
[podarok66@RB750Gr3] > :global ty {($host1);($host2);($host3);}
[podarok66@RB750Gr3] > :put $ty
192.168.88.1;10.10.10.5;16.10.11.2
[podarok66@RB750Gr3] > :put ($ty->2)
16.10.11.2
[podarok66@RB750Gr3] > :put ($ty->0)
192.168.88.1
[podarok66@RB750Gr3] > :global host4 "16.22.0.5"
[podarok66@RB750Gr3] > :set ty ($ty,($host4))       
[podarok66@RB750Gr3] > :put $ty                     
192.168.88.1;10.10.10.5;16.10.11.2;16.22.0.5


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 892
Зарегистрирован: 15 сен 2017, 09:03

20 мар 2020, 23:57

Приветствую ещё раз. Хорошо, когда есть друзья ! :co_ol:

Всё верно !

P/S С испугу, после работы или от усталости разделителями между элементами массива запятые поставил !

Код: Выделить всё

:local a ({$host1, $host2, $host3})
:-) Ну и как следствие - объявление трех элементов в массиве РОС считала одной строкой ... ;;-)))


, а правильно конечно

Код: Выделить всё

:local a ({$host1; $host2; $host3})
ну или :global ...

Отдыхать нужно своевременно ... И новости по телику меньше смотреть ...

В Вашем примере всё верно ! Простите ДОКа (совсем у нас пора горячая ...)
Тему можно закрыть.


Чего не знаем то нагуглим
Ответить