Как я могу передать массив в качестве аргумента для запуска командной строки сценария 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