从期望生成的进程中重定向到日志文件

问题描述 投票:0回答:1

我有一个产生另一个进程的脚本。我想将该过程的输出重定向到日志文件。但是>>不起作用

#!/bin/bash
#!/usr/local/bin/expect -f
####echo $@
/usr/local/bin/expect <<EOD
set timeout 10
spawn $sec/add.zims.user ${1} "${2} ${3}" >> /home/arvind/logs/ADD.log
expect "e4234234's Password: " { send "${4}\n" }
expect "*'s New password: " { send "${5}\n" }
expect "Enter the new password again:" { send "${5}\n" }
EOD

'''

bash expect
1个回答
0
投票

您可以让外壳处理重定向:

/usr/local/bin/expect <<EOD
# ...
spawn ... ;# with no redirection
# ...
EOD

或者,使用期望的log_filelog_user命令:

  • log_file -a $env(HOME)/logs/ADD.log会将输出发送到该日志文件中(除非您指定-noappend标志,否则将附加输出)。这不会not将常规输出关闭到stdout
  • log_user 0将关闭通常的标准输出。这不会更改使用log_file
  • 的日志记录

所以:

/usr/local/bin/expect <<EOD
set timeout 10
log_user 0
log_file -a /home/arvind/logs/ADD.log
spawn $sec/add.zims.user ${1} "${2} ${3}"
# ...
END
© www.soinside.com 2019 - 2024. All rights reserved.