linux – 使用bash捕获交互式程序的输出和输入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 使用bash捕获交互式程序的输出和输入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1024字,纯文字阅读大概需要2分钟。
内容图文
我正在使用bash自动化交互式命令行Java程序来验证程序是否为输入生成了正确的输出(基本上是穷人在bash中的单元测试).
例如,如果我有一个java程序要求用户输入他们的全名,然后只输出他们的名字,它应该是这样的:
Enter your name: John Doe
John
用户输入“John Doe”的地方.
运行此命令的简单bash命令可能如下所示:
OUTPUT=`echo "John Doe" | java NameReader`
要么
OUTPUT=`java NameReader <<< "John Doe"`
这两个问题都是$OUTPUT现在包含以下内容:
Enter your name: John
因为发送到stdin的文本(及其附带的换行符)不会在程序的输出中再现,就像我们在控制台中看到它一样.
理想情况下,$OUTPUT将包含:
Enter your name: John Doe
John
但我可以忍受这个:
Enter your name:
John
(输入完全省略,但输出在新行上,如预期的那样)
在bash中是否存在一种方法(不改变底层的java程序)以获取被传递给stdin的文本,以便在java程序读取的“时间”内输出到stdout,从而捕获完整的交互式会话?
(还有一点注意:有些搜索表明spawn / expect命令可能会有所帮助,但是这个运行的系统似乎没有它们可用)
解决方法:
您可以使用脚本命令
script -q -c "java NameReader" log.txt
这将在log.txt文件中记录java NameReader命令的输入和输出.
内容总结
以上是互联网集市为您收集整理的linux – 使用bash捕获交互式程序的输出和输入全部内容,希望文章能够帮你解决linux – 使用bash捕获交互式程序的输出和输入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。