期待脚本条款评估

时间:2012-08-01 17:27:19

标签: expect

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

  1. 我有一个程序和一个变量: 设置showcpu“show -d properties / SYS / MB / P \ r”

  2. 如果“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} ]
    }
    
  3. 执行结果如下:

    [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.
    

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

1 个答案:

答案 0 :(得分: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"

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