Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何将整个文件作为参数传递给tcl脚本?_File_Tcl - Fatal编程技术网

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

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

我有一个脚本,比如myscript.tcl。脚本将遍历一个文件并执行一些基本操作。但是我不想在脚本中硬编码文件名,比如“openmyfile.txt”。我希望能够在运行时从命令行向脚本传递不同的文件。我如何做到这一点?请提供帮助。

使用
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\""