0

我怎样才能发送这个值

24.215729
24.815729
25.055134
27.123499
27.159186
28.843474
28.877798
28.877798

tcl 输入参数?如您所知,我们不能使用管道命令,因为 tcl 以这种方式接受!我该怎么做才能将此数字存储在 tcl 文件中(变量中此数字的计数,可以是 0 到 N,在本例中为 7)

4

3 回答 3

2

这在 bash 中很容易做到,将值列表转储到文件中,然后运行:

tclsh myscript.tcl $(< datafilename)

然后可以使用参数变量在脚本中访问这些值:

 puts $argc;  # This is a count of all values
 puts $argv;  # This is a list containing all the arguments
于 2012-10-28T22:23:58.410 回答
1

我在编码时使用的一种技术是将数据作为文字放入我的脚本中:

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
}
于 2012-10-29T07:23:13.863 回答
1

您可以使用以下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
于 2012-10-28T22:36:28.993 回答