0

私は Linux (Ubuntu 12.10) の初心者です。TCL ファイルを制御するバッチ ファイルを作成し、TCL を数回実行したいと考えています。

たとえば、バッチ ファイルで次のことを行う必要があります。

for(i=1;i<100;i++){
    sudo ns test.tcl $i
}

Tcl ファイルでパラメーター ($i) を使用できるように、Tcl ファイルでパラメーター ($i) を受け入れます。

誰が私に何ができるか教えてもらえますか? または私に方向を教えてください。

前もって感謝します。

ps。TCL ファイル内にループを書きましたが、失敗しました。私のコードは次のようなものでした:

for(i=1;i<100;i++){

    set ns [new Simulator]
    .... 
    ....(my NS code)
    ....
    $ns run

}

$i==1 でしか実行されなかったので、ループを tcl スクリプトの外側に記述しようと考えています。

PS2。こんにちは、私は自分自身を明確に表現できなくて申し訳ありません。私はTCL構文に従いました。私の実際のコードは次のとおりです。

for {set i 1} {$i < 100} {incr i} {
    set ns [new Simulator]
    ...
    ...
    ...
    $ns run
}

そして、コードを次のように再配置することで、この問題を解決しました。

set ns [new Simulator]
for {set i 1} {$i < 100} {incr i} {
    ...
    ...
    ...
}
$ns run

現在、99回実行されています。理由はわかりませんが、:P

とにかくみんなありがとう:)

4

3 に答える 3

0

ええと、本当に Tcl を書いていますか? これは Tcl の構文ではありません。あなたが探しているかもしれないものは次のとおりです。

for {set i 1} {$i < 100} {incr i} {
    set ns [new Simulator]
    .... 
    ....(my NS code)
    ....
    $ns run
}

どこでも中かっこを使用します。ブラケットの使用を考えることができるのは配列の場合だけですが、これを確認するのに十分なほど深く Tcl を知っているとは思いません。開始条件、テスト、および次のコマンドは独自のブレース内にありincr ii++.

現在、newは Tcl の組み込み関数ではありません。newどこかで名前が付けられた proc はありますか? そうしないと、エラーが発生します。

于 2013-07-23T04:20:31.330 に答える
0

Tcl スクリプトは非常に単純で、多数のコマンドで構成され、各コマンドはコマンド名とそれに続く多数の引数で構成されます。制御構造でさえコマンドです。forコマンドは、開始スクリプト、テスト式、次のスクリプト、本体スクリプトの4 つの引数を取ります。他のすべてのコマンド引数 (およびコマンド名) と同様に、forの引数を好きなように引用したり、それらの一部に変数やその他の置換を使用したりすることもできますが、通常、それらがコマンドに送信される前にそれは望ましくありません。 、したがって、中かっこを使用します。

for {set i 1} {$i < 100} {incr i} {
  # ...
}
于 2013-07-23T04:20:48.157 に答える
0

まず気になるのはその表情

for(i=1;i<100;i++){

このループは 99 回しか実行されませんが、構文が間違っているだけでなく、これは望ましくない可能性があります。他の人は正しいforループを提案しているので、それに従ってください。それでも Tclforループが複雑すぎると思われる場合は、別の方法をお勧めします。

package require Tclx

loop i 0 100 {
    # i will run from 0 to 99
}

このアプローチの唯一の欠点は、Tclxパッケージをプルする必要があることですが、スクリプトが既に を使用している場合はTclx、なぜですか?

于 2013-07-23T16:37:22.373 に答える