San*_*996 1 arguments tcl batch-file
我想制作一个可以接受N多个参数的 tcl 过程。我想从 bat 文件中调用它。这是我写的程序:
proc multi_argu {args} {
foreach {path rev_start rev_end} $args {
puts "path-> $path"
puts "rev_start-> $rev_start"
puts "rev_end-> $rev_end"
}
}
multi_argu $argv
Run Code Online (Sandbox Code Playgroud)
现在我从我的 bat 文件中调用它作为
tclsh multi_argu.tcl 1 2 3
Run Code Online (Sandbox Code Playgroud)
但输出是
path-> 1 2 3
rev_start->
rev_end->
Run Code Online (Sandbox Code Playgroud)
在我的 tcl 文件的末尾,我打电话给 multi_argu $argv我认为是罪魁祸首。但是,我不知道如何为多个参数执行此步骤。任何人都可以提供任何意见吗?
由于$argv是一个列表,您将一个列表变量传递给您的 proc,这意味着$args成为一个包含一个列表元素的列表。
在 tcl 8.5 中,您可以对调用 proc 的方式稍作更改:
multi_argu {*}$argv
Run Code Online (Sandbox Code Playgroud)
该{*}会列举清单的项目,因此$args成为项目的列表。
否则,我想你可以使用类似的东西:
foreach {path rev_start rev_end} [lindex $args 0] { ... }
Run Code Online (Sandbox Code Playgroud)
args尽管这种方式违背了用作 proc 参数的目的。在这种情况下,您也可以使用另一个变量名。