Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何编写批处理文件以执行TCL文件_Batch File_Tcl_Ns2 - Fatal编程技术网

Batch file 如何编写批处理文件以执行TCL文件

Batch file 如何编写批处理文件以执行TCL文件,batch-file,tcl,ns2,Batch File,Tcl,Ns2,我是Linux(Ubuntu 12.10)的初学者。我想创建一个批处理文件来控制我的TCL文件,我想让我的TCL运行几次 例如,我希望批处理文件执行以下操作: for(i=1;i<100;i++){ sudo ns test.tcl $i } for(i=1;iUm,你确定你在写Tcl吗?这不是Tcl的语法。你可能要找的是: for {set i 1} {$i < 100} {incr i} { set ns [new Simulator] ....

我是Linux(Ubuntu 12.10)的初学者。我想创建一个批处理文件来控制我的TCL文件,我想让我的TCL运行几次

例如,我希望批处理文件执行以下操作:

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

for(i=1;iUm,你确定你在写Tcl吗?这不是Tcl的语法。你可能要找的是:

for {set i 1} {$i < 100} {incr i} {
    set ns [new Simulator]
    .... 
    ....(my NS code)
    ....
    $ns run
}
对于{set i 1}{$i<100}{incr i}{
设置ns[新模拟器]
.... 
..(我的NS代码)
....
$ns跑步
}
你在任何地方都使用大括号。我唯一能想到使用括号的是数组,但我认为我对Tcl的了解不够深入,无法确定这一点,而且你的开始条件、测试和下一个命令都在它们自己的大括号中,
incr I
相当于
I++

现在,
new
不是Tcl中的内置函数。您是否在某处有一个名为
new
的进程?如果没有,则会出现错误。

a非常简单,它由多个命令组成,每个命令由一个命令名和多个参数组成。即使是控制结构也是命令。该命令需要4个参数参数:一个开始脚本、一个测试表达式、一个下一个脚本和一个主体脚本。与所有其他命令参数(和命令名)一样,您可以以任何方式引用
的参数,甚至可以对其中一些参数使用变量和其他替换,但通常在将它们发送到命令之前您不希望这样,因此您可以使用大括号:

for {set i 1} {$i < 100} {incr i} {
  # ...
}
对于{set i 1}{$i<100}{incr i}{
# ...
}

我注意到的第一件事是表达式

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

这种方法的唯一缺点是您必须引入
Tclx
包,但是如果您的脚本已经使用了
Tclx
,为什么不呢?

Q:为什么您需要一个单独的(bash?)脚本?为什么不在TCL中完成整个过程(它本身就是一种非常好的脚本语言)?我试图在tcl文件中编写循环,但只运行了一次(当$I==1时),它没有运行$I==2~99。99次的问题是一个典型的“fencepost错误”;如果从0开始进行100次迭代,请对{set I 0}{$I<100}{incr I}…,如果从1开始,则对{set I 1}{$I使用

for {set i 1} {$i < 100} {incr i} {
    set ns [new Simulator]
    .... 
    ....(my NS code)
    ....
    $ns run
}
for {set i 1} {$i < 100} {incr i} {
  # ...
}
for(i=1;i<100;i++){
package require Tclx

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