在我的期望脚本中,我的目标是发送一个命令来显示主板上两个处理器的属性。请假设远程登录成功。这是send子句变量未成功评估的地方。
我有一个程序和一个变量: 设置showcpu“show -d properties / SYS / MB / P \ r”
如果“cpu”计数从0开始且小于2,我创建了一个while循环来执行“send”。
set cpu 0
while { $cpu < 2 } {
expect {
-re $prompt {send "${showcpu}${cpu}\r"; }
timeout {
my_puts "ILOM prompt timeout error-2" [ list $fh1 $fh3 stdout ]
exit 1
}
}
set cpu [ expr {$cpu + 1} ]
}
执行结果如下:
[BL0/SP]-> show -d properties /SYS/MB/P
show: Invalid target /SYS/MB/P
[BL0/SP]-> 0
Invalid command '0' - type help for a list of commands.
我希望脚本将值$showcpu
与$cpu
结合使用,它应如下所示:
show -d properties /SYS/MB/P0 and show -d properties /SYS/MB/P1.
有人可以告诉我我需要做些什么来实现这个目标吗?
答案 0 :(得分:0)
变量${showcpu}
本身已包含“\ r”(根据1.)。
要么在没有“\ r”的情况下定义它:
set showcpu "show -d properties /SYS/MB/P"
或使用string trim
(http://wiki.tcl.tk/10174):
send "[string trim ${showcpu}]${cpu}\r"
我建议修剪设置变量的地方的空白区域,而不是在使用变量的地方。