gpt4 book ai didi

tcl - 预期脚本操作顺序

转载 作者:行者123 更新时间:2023-12-02 17:48:03 25 4
gpt4 key购买 nike

所以首先我承认我对脚本很陌生,我已经玩了大约 3 天了。我拿起奥莱利的书,正在努力读完。然而,我对期望的流程有点困惑,并希望得到一些指导。

我下面有以下代码片段。 if 语句的上半部分工作得很好。但是 elseif 部分没有按预期工作。它执行了,只是无序。它首先处理 put 行,然后向下运行发送命令。我想知道它为什么这样做以及如何让它按顺序执行。

我想做的另一个调整是,当 $MD5 不匹配时,我不想等待超时。所以基本上我希望得到 $MD5 或任何不是 $MD5 的东西,这样我就不必等待默认超时。我意识到我可以期望 -timeout 1 "$MD5"并缩短窗口,但我想知道是否有更优雅的方法来处理这个问题。

提前谢谢您。

expect "$MD5"
if {$MD5 == $expect_out(0,string)} {
send "config t\r";
send "no boot system\r";
send "boot system flash:$IOS\r";
send "exit\r";
send "wr mem\r";
expect "OK";
send "exit\r";
puts -nonewline "\nIOS Upgrade Successful and Bootvar changed.\n"
exit
} elseif {$MD5 != $expect_out(0,string)} {
send "delete flash:$IOS\r";
send "\r";
send "\r";
send "exit\r";
puts -nonewline "\nIOS Upgrade FAILED MD5 Hash did not match!\n";
expect eof
exit
}

最佳答案

Expect 实际上异步处理 send,具体取决于生成的应用程序实际接受数据的速度(还有一些其他速率限制器)。为了让事情等待,您需要使用expect

修复方法是将 puts 放在 expect eof 之后(或者预先放置其他内容的 expect,例如您的提示)执行删除 flash 后得到:...)。

关于tcl - 预期脚本操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646283/

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