gpt4 book ai didi

expect - 如何将调试信息重定向到 expect 脚本中的文本文件?

转载 作者:行者123 更新时间:2023-12-04 02:04:10 35 4
gpt4 key购买 nike

我的 shebang 看起来像这样:

#!/usr/bin/expect -d

当我从命令行运行脚本时,它会提供我想要的内容。

但是,我通过 crontab 运行这个脚本。是否可以将调试开关保持打开状态,让它继续写入某种调试日志?

最佳答案

你必须使用 exp_internal 标志为 -f 和日志必须发生的文件名。

输出文件名必须跟在 01 之后。 0 或 1 像以前一样禁用或启用诊断的生成。

enter image description here

exp_internal -f file 0 的形式特别有用,因为 Expect 看起来就像没有生成诊断一样,即使它实际上是将通常的输出和诊断写入文件同时。您可以将此特定命令放在生产脚本中,用户不会受到该命令的影响。如果用户随后报告错误,您可以检查该文件并准确了解问题出在哪里。

示例:

#!/usr/bin/expect
exp_internal -f debug_info.log 0; # This is where the magic is happening ;)
expect {
quit { exit }
-re "(.+)\n" { puts "you typed $expect_out(1,string)";exp_continue}
timeout { puts "I am waiting for you";exp_continue }
}

如果您运行这个程序,我们可以在名为debug_info.log 的文件中获取调试信息,该文件将存储在当前目录中。 (即它是相对路径。您也可以提供绝对路径,例如/home/JLLouthan/somelogdir/mylog.log )

您也可以将此文件名设为动态。例如,您也可以将其作为命令行参数提供。

if {$argc!=1} {
puts "Usage : $argv0 <debug-file>"
exit
}

lassign $argv input_file
exp_internal -f $input_file 0

注意: exp_internal 命令可以放置在代码段周围以限制它们产生的诊断数量。每个 exp_internal 命令都会关闭以前由 exp_internal 命令命名的任何文件。

因此您可以将脚本的不同部分记录到不同的文件中。当脚本结束时,所有打开的 exp_internal 文件都会关闭。

引用:Exploring Expect

关于expect - 如何将调试信息重定向到 expect 脚本中的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27569885/

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