在TCL中如何通过命令行参数将列表作为一个变量传递?

时间:2014-07-22 17:17:32

标签: tcl

我试过这个:

<tcl_interpreter> mytcl.tcl first {1 2 3 4 5 6}

我希望arg1成为“第一”,将arg2作为列表{1 2 3 4 5 6}。所以$ argc应该是2.但是$ argc给了我7并且{1 2 3 4 5 6}的每个元素被视为一个单独的参数。

2 个答案:

答案 0 :(得分:1)

您需要使用引号而不是大括号。解释器不知道括号是指列表,因为它们表示Tcl中的列表。如果你想传递一个列表,你可以这样做:

<tcl_interpreter> mytcl.tcl first "1 2 3 4 5 6"

如果您的mytcl.tcl中有这样的内容,则会打印3

[lindex [lindex $argv 1] 2]

请注意,使用"{1 2 3 4 5 6}"会为脚本提供一个包含一个元素的列表,该元素本身就是一个包含6个元素的列表。

答案 1 :(得分:0)

知道了。只需将{1 2 3 4 5 6}放在引号内。所以:

<tcl_interpreter> mytcl.tcl first "{1 2 3 4 5 6}"

会产生我想要的东西。它会将{1 2 3 4 5 6}视为一个整数列表。