File 如何将整个文件作为参数传递给tcl脚本?
我有一个脚本,比如myscript.tcl。脚本将遍历一个文件并执行一些基本操作。但是我不想在脚本中硬编码文件名,比如“openmyfile.txt”。我希望能够在运行时从命令行向脚本传递不同的文件。我如何做到这一点?请提供帮助。使用File 如何将整个文件作为参数传递给tcl脚本?,file,tcl,File,Tcl,我有一个脚本,比如myscript.tcl。脚本将遍历一个文件并执行一些基本操作。但是我不想在脚本中硬编码文件名,比如“openmyfile.txt”。我希望能够在运行时从命令行向脚本传递不同的文件。我如何做到这一点?请提供帮助。使用tclsh myscript.tcl myfile.txt调用脚本,并在脚本中: lassign $argv filename set fid [open $filename] 如果要传递多个文件名:tclsh myscript.tcl file1 file2 f
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]
# ...
}
使用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]
# ...
}
脚本文件名之后tclsh的所有参数都存储为全局Tcl变量argv
(该列表的长度放在argc
;您不需要它,因为Tcl列表知道自己的长度)。这意味着您可以使用常规列表处理命令,如lindex
、lassign
或foreach
访问该列表中的值:
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\""
脚本文件名之后tclsh的所有参数都存储为全局Tcl变量argv
(该列表的长度放在argc
;您不需要它,因为Tcl列表知道自己的长度)。这意味着您可以使用常规列表处理命令,如lindex
、lassign
或foreach
访问该列表中的值:
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\""