この値を送信するにはどうすればよいですか
24.215729
24.815729
25.055134
27.123499
27.159186
28.843474
28.877798
28.877798
tcl入力引数に?ご存知のように、tcl dosentはそのように受け入れるため、pipeコマンドを使用することはできません。この数値を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
}
これで、を使用して一度に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
}
stdin
次のようなコマンドでパイプされたデータを読み取ることができます
set data [gets stdin]
または、必要に応じて一時ファイルから。たとえば、次のプログラムの最初の部分(wiki.tcl.tkの例)はファイルからデータを読み取り、他の部分はからデータを読み取りますstdin
。それをテストするには、コードをファイル(eg reading.tcl
)に入れ、実行可能にし、小さなファイルを作成し、somefile
egを介して実行します。
./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