2016-12-27 150 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) 
    

还有许多其他的方式来做到这一点,但是这两个是很容易的。