使用expect:如何在屏幕上而不是在打开的日志文件上打印消息

使用expect:如何在屏幕上而不是在打开的日志文件上打印消息

我有一个预计shell,并且必须在开始时打开一个日志文件,然后在 for 循环内我想检查某些条件,如果满足这些条件我想将消息打印到屏幕而不是日志文件中

笔记:

我尝试过使用send_logsend_errorsend_userputs但它们都不适合我。每次我想将某些内容打印到屏幕而不是日志文件时,是否必须关闭 log_file 然后打开它?

代码示例:

log_file -a something.log
.
.
.
for loop { 
log something to the log file
if certain condition met {
 then log to a screen only
}
log_file

答案1

puts似乎忽略了我的日志文件(expect version 5.45Debian 8):

$ > logtest; expect -c 'log_file logtest; send_user "foo\n"; puts bar' 
foo
bar
$ cat logtest
foo

答案2

回复

“puts 似乎忽略了我的日志文件(预计版本 5.45 Debian 8):”

linux shell 中的命令 do it 是工作,但是当您进入expect shell并打开日志文件然后输入puts时,这将在屏幕和日志文件上打印您想要打印的内容...

我也在使用期望版本5.45

相关内容