0

在我的期望脚本中,我的目标是发送一个命令来显示主板上两个处理器的属性。请假设远程登录成功。这是未成功评估 send 子句变量的地方。

  1. 我有一个过程和一个变量: set showcpu "show -d properties /SYS/MB/P\r"

  2. 如果“cpu”计数从 0 开始且小于 2,我创建了一个 while 循环来执行“发送”。

    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.

有人可以告诉我我需要做些什么来实现这一目标吗?

4

1 回答 1

0

变量${showcpu}本身已经包含“\r”(根据 1.)。要么在没有“\r”的情况下定义它:

set showcpu "show -d properties /SYS/MB/P"

或使用string trimhttp://wiki.tcl.tk/10174):

send "[string trim ${showcpu}]${cpu}\r"

我建议在设置变量的地方修剪空白,而不是在使用变量的地方。

于 2013-02-20T09:37:02.200 回答