我怎样才能发送这个值
24.215729
24.815729
25.055134
27.123499
27.159186
28.843474
28.877798
28.877798
tcl 输入参数?如您所知,我们不能使用管道命令,因为 tcl 以这种方式接受!我该怎么做才能将此数字存储在 tcl 文件中(变量中此数字的计数,可以是 0 到 N,在本例中为 7)
这在 bash 中很容易做到,将值列表转储到文件中,然后运行:
tclsh myscript.tcl $(< datafilename)
然后可以使用参数变量在脚本中访问这些值:
puts $argc; # This is a count of all values
puts $argv; # This is a list containing all the arguments
我在编码时使用的一种技术是将数据作为文字放入我的脚本中:
set values {
24.215729
24.815729
25.055134
27.123499
27.159186
28.843474
28.877798
28.877798
}
现在我可以一次将它们输入一个命令foreach
,或者将它们作为单个参数发送:
# One argument
TheCommand $values
# Iterating
foreach v $values {
TheCommand $v
}
一旦您的代码使用文字,切换它以从文件中提取数据非常简单。您只需用代码替换文字即可读取文件:
set f [open "the/data.txt"]
set values [read $f]
close $f
您还可以从标准输入中提取数据:
set values [read stdin]
如果有很多值(例如,超过 10–20MB),那么您最好一次处理一行数据。以下是从标准输入读取的方法……</p>
while {[gets stdin v] >= 0} {
TheCommand $v
}
您可以使用以下stdin
命令读取通过管道传输的数据
set data [gets stdin]
或从临时文件中,如果您愿意。例如,以下程序的第一部分(来自wiki.tcl.tk的示例)从文件中读取一些数据,然后另一部分从stdin
. 要对其进行测试,请将代码放入文件(例如reading.tcl
),使其可执行,创建一个小文件somefile
,然后通过例如执行
./reading.tcl < somefile
#!/usr/bin/tclsh
# Slurp up a data file
set fsize [file size "somefile"]
set fp [open "somefile" r]
set data [read $fp $fsize]
close $fp
puts "Here is file contents:"
puts $data
puts "\nHere is from stdin:"
set momo [read stdin $fsize]
puts $momo