2016-12-27 6 views
0

私はns2で実行する必要があるtclコードを持っています。私たちは皆知っているので、ターミナルに 'ns abc.tcl'と入力するだけです。私のabc.tclコードでは、私は変更し、コードを実行する必要がある変数xがあります。私はxの値を変更し、 'ns abc.tcl'をターミナルで実行し、値を再び変更して、ターミナルで 'ns abc.tcl'をxの値のセットに対して再度実行するスクリプトを書く方法はありますか? 。私はシェルスクリプトを書く必要があると思うが、私はそれについて何も知らない。あなたは私が最初に書くべきもののようなスクリプトを書かなければならない形式を教えてもらえますか?xの値を書き、それをターミナルで 'ns abc.tcl'を実行させる方法はどこですか? 'function()' 'do' 'あなたが特定のリンクを私に指示することができればそれは役に立つでしょう。コマンドのループを作成するためのシェルスクリプト

+0

あなたの 'tcl'コードに変数を与えるために' bash'でスクリプトを書いていますか?なぜコマンドラインを渡して 'tcl'の中で処理できないのでしょうか? – Inian

+0

実際に私のtclコードは結果として整数(スループット)を生成します。 xにはさまざまな値がありますので、それを自分で変更して毎回実行するのは面倒です。私はtclコード全体を囲むforループを書こうとしましたが、うまくいきませんでした。 – instame

答えて

0

最も簡単な方法は、値を引数として渡すことです。

  1. コードをns abc.tcl TheValueToPassInと呼びます。

    set myValue [lindex $::argv 0] 
    

しかし、それは可能性があります:スクリプト名の後にすべての引数のリストが含まれているべき、lindexargvグローバル変数にインデックスを付けることで、あなたのコード内の値が

  • アクセス(に正確にはのプログラムに従います)。その場合は、環境変数内の値を渡します。

    1. コードをMYVAR=TheValueToPassIn ns abc.tclとして呼び出します。

    2. アクセスグローバルenv配列に見ることによって、あなたのコード内の値:

      set myValue $::env(MYVAR) 
      

    はそれを行うには、他の多くの方法がありますが、それらの二つは非常に簡単です。

  • 関連する問題