【问题标题】:Expect: How to use "ls -d filename" for full path name in expect?期望:如何在期望中使用“ls -d 文件名”作为完整路径名?
【发布时间】:2018-11-23 19:52:39
【问题描述】:

我正在尝试使用期望在硬件上自动加载图像。为此,我需要获取图像的完整路径。

我正在使用以下语法 -

spawn ls -d $env(PWD)/build/image/bmxs.*bin
expect -re {(\S+)(\r)}
set imgpath $expect_out(1,string)

我得到的信息是 -

spawn: returns {51875}

expect: does "" (spawn_id exp4) match regular expression "(\S+)(\r)"? no

所以,spawn 似乎没有返回任何东西。

我尝试了各种语法,但没有用 -

send "ls -d $env(PWD)/build/images/final/nxos.*bin\r"
spawn "ls -d $env(PWD)/build/image/bmxs.*bin"
puts "$LS" ### where $LS is the command.

这些都不起作用。我是不是搞错了?

【问题讨论】:

    标签: scripting automation expect


    【解决方案1】:

    您的代码表明

    1. 图像文件是本地的 - 在您运行 Expect 的同一台机器上
    2. 你想要第一个匹配模式的文件

    如果是这样,你可以这样做

    set files [glob $env(PWD)/build/image/bmxs.*bin]
    set imgpath [lindex [lsort $files] 0]
    

    另一方面,短语“在硬件上”表明此映像文件位于某个远程系统上。如果是这样,并且您已经在那里产生了一个登录会话,您需要在现有会话上sendls 命令,然后expectls 的输出。但是在这种情况下,从 $env(PWD)" 获取目录看起来很奇怪,因为这将读取本地计算机上的环境变量 PWD。​​p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多