如何解决程序的控制台输出包括重定向的标准输入?
| 我有一个命令行程序,我会将重定向的输入传递给该文件,并传递给一个文件:./program < some_input_file > some_output_file
显然,这会写入不包括重定向输入的输出。是否有一些简单的方法来获取程序日志,包括我传递的重定向输入?
我愿意使用外部程序或脚本-我正在bash / linux上运行它。
[编辑]
我正在寻找一种使输出交错的方法-就像程序在终端中运行一样,输入文件只是手动键入
解决方法
以下是如何执行此操作的示例:
> cat input.txt
asdf
qwer
zxcv
> tee output.txt < input.txt | cat >> output.txt
> cat output.txt
asdf
qwer
zxcv
asdf
qwer
zxcv
只需将上面的cat
替换为您的程序,就可以了。现在,如果您希望它交错,那么您必须做一些不同的事情:
> while read line
do
echo $line >> output.txt
echo $line | cat >> output.txt
done < \'input.txt\'
> cat output.txt
asdf
asdf
qwer
qwer
zxcv
zxcv
再次用shell脚本替换cat
。
,如果您的程序在读取下一个输入之前打印了某种提示,则可以使用expect
与之交互。您的expect
脚本可以在读取输入行时将其打印出来,并在看到提示后将其发送到程序。这样就可以提供正确的交错输出,而无需每行运行一次程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。