当在 perl 脚本中执行命令时,perl 可以响应命令中提出的 STDOUT 请求吗?
我正在 perl 脚本内执行一个命令,当该命令完成时,会向 STDOUT 发送一个问题,请求对问题给出 Y 或 N 答案。如果没有给出答案(即我只是结束脚本),那么我们的 shell 中有一个挂起的进程等待答案。我怎样才能提供所需的 Y 答案?
Perl v5.8.4 索拉里斯10
I'm executing a command inside a perl script and when that command completes, a question is sent to STDOUT requesting a Y or N answer to a question. If no answer is given (i.e. I just end the script) then we have a hung process in the shell waiting for an answer. How can I supply the desired Y answer?
perl v5.8.4
solaris 10
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最简单:
使用 shell 的能力将“Y”重定向到命令的 STDIN:
或者(稍差但更灵活)。
更复杂但无限灵活且 Perl 原生:
使用
Expect
模块Simplest:
Use shell's ability to redirect "Y" into command's STDIN:
or (slightly worse but more flexible).
More complicated but infinitely more flexible and Perl native:
Use
Expect
module预期
Expect
假设您总是想要回答“Y”并且该命令只会提示一次:
如果命令将提示多次并且您总是想要回答“Y”:
否则,正如其他人所建议的那样,
Expect
可能是您的最佳选择。Assuming you always want to answer 'Y' and the command will only prompt once:
If the command will prompt more than once and you always want to answer 'Y':
Otherwise,
Expect
is probably your best bet as the others have suggestes.