【发布时间】:2013-07-23 03:06:11
【问题描述】:
我是 Linux (Ubuntu 12.10) 的初学者。我想创建一个批处理文件来控制我的 TCL 文件,并且我希望我的 TCL 运行几次。
例如,我希望批处理文件执行以下操作:
for(i=1;i<100;i++){
sudo ns test.tcl $i
}
我希望我的 tcl 文件接受参数 ($i),以便我可以使用 tcl 文件中的参数。
谁能告诉我我能做什么?或者给我一个方向?
提前致谢。
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
还是谢谢你们:)
【问题讨论】:
-
问:为什么需要一个单独的(bash?)脚本?为什么不直接用 TCL(它本身就是一种非常好的脚本语言)来做所有事情呢?
-
我试图在 tcl 文件中编写循环,但它只运行一次(当 $i == 1 时),它没有运行 $i==2~99。
-
99次问题是一个经典的“栅栏错误”;如果您从 0 开始进行 100 次迭代,请使用
for {set i 0} {$i < 100} {incr i} …,如果您从 1 开始,请使用for {set i 1} {$i <= 100} {incr i} …。 注意不同的比较运算符!
标签: batch-file tcl ns2