Arrays 如何将数组作为参数传递给TCL脚本命令行运行?

Arrays 如何将数组作为参数传递给TCL脚本命令行运行?,arrays,tcl,parameter-passing,command-line-arguments,cmdline-args,Arrays,Tcl,Parameter Passing,Command Line Arguments,Cmdline Args,我有script2 script 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

我有script2 script 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]

子TCL脚本将数组参数视为变量,并且不在输出中打印任何值。请您提供帮助,如何在将数组作为命令行参数传递时指定数组

要传递数组,我们应该使用
array get
。因此,您应该调用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

请记住,如果您将数组作为序列化值传递,那么此时它就是一个字典;
dict
命令可能更适合另一方处理该值。