Как я могу передать массив в качестве аргумента для запуска командной строки сценария TCL?

У меня есть сценарий 2, сценарий main.tcl и sub.tcl, где в main.tcl я создаю 2 массива, которые мне нужно передать в сценарий sub.tcl в качестве аргументов командной строки.

Main.tcl:

   set arr1(0) 100
   set arr1(1) 200

   set arr2(0) 300
   set arr2(1) 400
   set res [exec tclsh.exe sub.tcl arr1 arr2]
   puts $res 

sub.tcl

      set arr1 [lindex $argv 0]
      set arr2 [lindex $argv 1]
      puts [array get arr1]
      puts [array get arr2]

Сценарий sub.tcl рассматривает аргументы массива как переменные и не выводит никаких значений на выходе. Не могли бы вы помочь, как можно указать массив при передаче массива в качестве аргумента командной строки.

1 ответ

Решение

Чтобы передать массив, мы должны использовать array get <arrayname>, Итак, вы должны вызывать sub.tcl, так как

set res [exec tclsh.exe sub.tcl [array get arr1] [array get arr2]]

В sub.tcl, напрямую печатайте аргументы как

array set arr1 [lindex $argv 0]
array set arr2 [lindex $argv 1]
parray arr1
parray arr2
Другие вопросы по тегам