期待:如何使用" ls -d filename"对于期望的完整路径名?

时间:2018-06-14 06:08:07

标签: scripting automation expect

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

我使用以下语法 -

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

因此,似乎产生的东西不会返回任何东西。

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

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.

这些都不起作用。我犯了错误吗?

1 个答案:

答案 0 :(得分:1)

您的代码建议

  1. 图像文件是本地的 - 在运行Expect
  2. 的同一台计算机上
  3. 您想要第一个与模式匹配的文件
  4. 如果是这样,你可以做到

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

    另一方面,短语“在硬件上”表明该图像文件位于某个远程系统上。如果是,并且您已经在那里产生了登录会话,则需要在现有会话上send ls命令,然后expect ls Set r = Workbooks("Copy of Copy of shipments 5.1.xlsm"). _ Sheets("rapportages").Range("rm") 的输出。但是在这种情况下,从$ env(PWD)获取目录看起来很奇怪,因为这将读取本地计算机上的环境变量PWD。