gpt4 book ai didi

tcl - 使用 Tcl expect 从命令中获取输出

转载 作者:行者123 更新时间:2023-12-04 18:34:14 28 4
gpt4 key购买 nike

我花了一天的大部分时间到处寻找答案,但到目前为止没有任何效果。我想要做的是运行一个 expect 脚本,该脚本将附加到 GNU 屏幕 session ,向其发送命令行参数(命令),并输出该命令的结果。到目前为止,这是我的脚本之一:


#!/usr/bin/expect -f


set timeout 3
#exp_internal 1

spawn screen -raAd call_sess
sleep 1

expect -re "\\\$" {
send $argv
send "\n"
sleep 1
}

expect -re ".*" {
set output $expect_out(0,string)
}

expect "\$" {
send "\001"
send "d"
}

expect eof {
puts "OUTPUT---------------"
puts $output
puts "OUTPUT---------------"
}

并且 $expect_out(0,string) 只匹配换行符,即使 .* 应该匹配自上次匹配以来的所有内容。如果有人可以帮助我完成这项工作,那将是非常棒的,我准备放弃并认为这是不可能的。

编辑:在评论中回答,但我应该指定该命令确实在屏幕上运行,我只是无法正确捕获输出。

EDIT2:按照建议将脚本更改为生成屏幕,谢谢!

最佳答案

答案最简单的部分是 .*匹配空字符串,因此进入 expect_out .

困难的部分是 screen 会给你整个屏幕 - 包括任何以前的命令 - 所以仅仅找到你发送的命令的输出可能有点困难。

关于tcl - 使用 Tcl expect 从命令中获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261097/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com