我有一个命令行程序,我正在将重定向的输入传递给文件:
./program < some_input_file > some_output_file
这显然写出了不包括重定向输入的输出。是否有一些简单的方法来记录程序,包括我传入的重定向输入?
我愿意使用外部程序或脚本 - 我在bash / linux上运行它。
[编辑]
我正在寻找一种方法来使输出交错 - 好像程序是在终端中运行的,输入文件只是手动输入
答案 0 :(得分:1)
以下是如何执行此操作的示例:
> 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
。
答案 1 :(得分:1)
如果您的程序在阅读下一个输入之前打印某种提示,则可以使用expect
与其进行交互。您的expect
脚本可以在读取时打印每个输入行,并在看到提示后将其发送到程序。这为您提供了正确的交错输出,而无需每行运行一次程序。