0

この値を送信するにはどうすればよいですか

24.215729
24.815729
25.055134
27.123499
27.159186
28.843474
28.877798
28.877798

tcl入力引数に?ご存知のように、tcl dosentはそのように受け入れるため、pipeコマンドを使用することはできません。この数値を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
}

これで、を使用して一度に1つずつコマンドにフィードするforeachか、単一の引数として送信することができます。

# One argument
TheCommand $values
# Iterating
foreach v $values {
    TheCommand $v
}

コードをリテラルで機能させると、ファイルからデータをプルするようにコードを切り替えるのは非常に簡単です。リテラルをコードに置き換えるだけで、ファイルを読み取ることができます。

set f [open "the/data.txt"]
set values [read $f]
close $f

stdinからデータをプルすることもできます。

set values [read stdin]

値が多い場合(たとえば、10〜20 MBを超える場合)、一度に1行ずつデータを処理する方がよい場合があります。stdinから読み取る方法は次のとおりです…</p>

while {[gets stdin v] >= 0} {
    TheCommand $v
}
于 2012-10-29T07:23:13.863 に答える
1

stdin次のようなコマンドでパイプされたデータを読み取ることができます

set data [gets stdin]

または、必要に応じて一時ファイルから。たとえば、次のプログラムの最初の部分(wiki.tcl.tkの例)はファイルからデータを読み取り、他の部分はからデータを読み取りますstdin。それをテストするには、コードをファイル(eg reading.tcl)に入れ、実行可能にし、小さなファイルを作成し、somefileegを介して実行します。

./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 に答える