包含重定向标准输入的程序的控制台输出?

时间:2011-04-15 00:12:39

标签: bash stdin io-redirection

我有一个命令行程序,我正在将重定向的输入传递给文件:

./program < some_input_file > some_output_file

这显然写出了不包括重定向输入的输出。是否有一些简单的方法来记录程序,包括我传入的重定向输入?

我愿意使用外部程序或脚本 - 我在bash / linux上运行它。

[编辑]

我正在寻找一种方法来使输出交错 - 好像程序是在终端中运行的,输入文件只是手动输入

2 个答案:

答案 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脚本可以在读取时打印每个输入行,并在看到提示后将其发送到程序。这为您提供了正确的交错输出,而无需每行运行一次程序。