2016-12-27 165 views
0

所以我有一個tcl代碼,我需要在ns2中運行。正如我們都知道我只需要在終端輸入'ns abc.tcl'。在我的abc.tcl代碼中,我有一個變量x,我需要更改並運行代碼。有什麼辦法可以編寫一個腳本來改變x的值,並在終端中運行'ns abc.tcl',然後再次改變這個值並在終端運行'ns abc.tcl'來獲得一組x值。我相信我需要編寫一個shell腳本,但我對此一無所知。你能告訴我我應該寫腳本的格式,比如我應該先寫什麼,在哪裏寫我的x值以及如何讓它運行'ns abc.tcl in terminal:'function()''do''完成'等等...如果你能指導我到那個特定的鏈接將是有益的。shell腳本爲命令創建循環

+0

您在'bash'中編寫腳本來爲您的'tcl'代碼提供一個變量?爲什麼不能傳遞命令行並在'tcl'內處理它? – Inian

+0

其實我的tcl代碼生成一個整數(吞吐量)作爲結果。 x有很多值,所以它很煩人,可以自己改變它並每次運行它。我試圖編寫一個封閉整個tcl代碼的for循環,但它不起作用。 – instame

回答

0

提供它的最簡單方法是將值作爲參數傳遞。

  1. 將您的代碼調用爲ns abc.tcl TheValueToPassIn

  2. 訪問你的代碼中的值,通過索引與lindexargv全局變量,它應該包含的腳本名之後的所有參數列表:

    set myValue [lindex $::argv 0] 
    

然而,這可能是該將不起作用(取決於究竟ns程序是什麼)。如果是這樣,將值傳入環境變量中:

  1. 將您的代碼調用爲MYVAR=TheValueToPassIn ns abc.tcl

  2. 訪問通過查看全球env陣列在你的代碼中的值:

    set myValue $::env(MYVAR) 
    

還有許多其他的方式來做到這一點,但是這兩個是很容易的。