gpt4 book ai didi

期待 - 在互动时期待

转载 作者:行者123 更新时间:2023-12-04 20:06:41 26 4
gpt4 key购买 nike

我想在“交互”模式下“监听”shell 输出的字符串。或者我想以某种方式模拟交互模式,这仍然允许我从 shell 监听特定的字符串。

好像interact只听用户输入(我按下的键)而不是 shell 返回的内容。

我将如何让 Expect 在每次看到特定字符串时执行某些操作,否则让我不受阻碍地以交互方式使用 shell?。

例子:

proc yay {} {
send_user "Yay\n"
}

trap { # trap sigwinch and pass it to the child we spawned
set rows [stty rows]
set cols [stty columns]
stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

spawn bash

interact {
interact -re "HOT" {
yay
}

expect {
fuzz yay
}

}

如果我运行它并输入“HOT”,它会响应“Yay”。正如预期的那样,它读取了我的 key 。但如果我输入
echo fuzz

“期望”子句不会被触发。 “echo HOT”也不会触发任何东西。

所以这是可能的还是我错过了一些东西。也许我需要模仿 interact在某种“期望,继续”循环中。重要的是一切都在 shell 中正常工作。

任何人的建议?

最佳答案

您可以使用 expect_background命令。来自 man page :

takes the same arguments as expect, however it returns immediately. Patterns are tested whenever new input arrives.



您可以像这样修改初始脚本:
#!/usr/bin/expect

proc yay {} {
send_user "Yay\n"
}

trap { # trap sigwinch and pass it to the child we spawned
set rows [stty rows]
set cols [stty columns]
stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

spawn bash

expect_background {
fuzz yay
}
interact -re "HOT" {
yay
}

关于期待 - 在互动时期待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575770/

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