【问题标题】:How can I pass an array as argument to TCL script command line run?如何将数组作为参数传递给 TCL 脚本命令行运行?
【发布时间】:2017-12-09 23:39:28
【问题描述】:

我有脚本 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 脚本将数组参数视为变量,它不会在输出中打印任何值。您能否帮忙,如何在将数组作为命令行参数传递时指定数组。

【问题讨论】:

    标签: arrays tcl parameter-passing command-line-arguments cmdline-args


    【解决方案1】:

    要传递一个数组,我们应该使用array get <arrayname>。因此,您应该将 sub.tcl 称为

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

    在sub.tcl中,直接打印args为

    array set arr1 [lindex $argv 0]
    array set arr2 [lindex $argv 1]
    parray arr1
    parray arr2
    

    【讨论】:

    • 请记住,如果您将数组作为序列化值传递,那么此时它字典; dict 命令可能更适合对方使用该值。
    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2013-08-03
    • 2014-03-08
    • 2013-10-22
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多