Expect:如何在 expect 中使用 "ls -d filename" 作为完整路径名?
Expect: How to use "ls -d filename" for full path name in 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
所以,看来 spawn 没有 return 任何东西。
我尝试了各种语法,但没有用 -
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.
None 这些作品。我是不是搞错了?
您的代码表明
- 图像文件是本地的 - 在您运行期望
的同一台机器上
- 您想要第一个与模式匹配的文件
如果是这样,你可以这样做
set files [glob $env(PWD)/build/image/bmxs.*bin]
set imgpath [lindex [lsort $files] 0]
另一方面,短语 "on the hardware" 表明此图像文件位于某个远程系统上。如果是这样,并且您已经在那里生成了一个登录会话,则需要在现有会话上 send
ls
命令,然后 expect
来自 ls
的输出。然而,在那种情况下,从 $env(PWD)" 获取目录看起来很奇怪,因为这将读取本地计算机上的环境变量 PWD。
我正在尝试使用 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
所以,看来 spawn 没有 return 任何东西。
我尝试了各种语法,但没有用 -
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.
None 这些作品。我是不是搞错了?
您的代码表明
- 图像文件是本地的 - 在您运行期望 的同一台机器上
- 您想要第一个与模式匹配的文件
如果是这样,你可以这样做
set files [glob $env(PWD)/build/image/bmxs.*bin]
set imgpath [lindex [lsort $files] 0]
另一方面,短语 "on the hardware" 表明此图像文件位于某个远程系统上。如果是这样,并且您已经在那里生成了一个登录会话,则需要在现有会话上 send
ls
命令,然后 expect
来自 ls
的输出。然而,在那种情况下,从 $env(PWD)" 获取目录看起来很奇怪,因为这将读取本地计算机上的环境变量 PWD。