如何将整个文件作为参数传递给tcl脚本?

时间:2015-11-13 13:30:54

标签: file tcl

我有一个脚本说,myscript.tcl。该脚本将通过一个文件并执行一些基本操作。但我不想用“open myfile.txt”之类的东西对脚本中的文件名进行硬编码。我希望能够在运行时从命令行将不同的文件传递给脚本。我该如何实现这一目标?请帮忙。

2 个答案:

答案 0 :(得分:4)

使用tclsh myscript.tcl myfile.txt并在脚本中调用脚本:

lassign $argv filename
set fid [open $filename]

如果您想传递多个文件名:tclsh myscript.tcl file1 file2 file3

foreach filename $argv {
    puts "Operating on: $filename"
    set fid [open $filename]
    # ...
}

答案 1 :(得分:4)

脚本文件名后tclsh的所有参数都作为列表存储在全局Tcl变量argv中(并且该列表的长度放在argc中;您不需要因为Tcl列表知道自己的长度)。这意味着您可以使用常规列表处理命令(例如lindexlassignforeach)来访问该列表中的值:

set filename [lindex $argv 0]
puts "The filename is \"$filename\""

set f [open $filename]
set line [read $f]
puts "The first line of \"$filename\" is \"$line\""