如何记录使用bash脚本和标准输入运行的可执行文件的输出?

时间:2009-08-03 21:20:56

标签: bash

我是编写bash脚本的新手(并不是很好)。因此,如果我能对我的问题得到一些解释性的帮助,那就太好了。

以下是我编写的bash脚本,它为./runnable(可执行文件)提供标准输入,其中包含input.aa作为参数。我想在另一个文件中输出这个./runnable input.aa的输出,比如输出。有关如何重新构建代码的任何建议?如果我的脚本有任何问题,请提出建议。

#!/bin/bash

./runnable input.aa <<EOF

>2       #input I want runnable to take 
>15
>7
>12
>16
>92
>18
EOF

3 个答案:

答案 0 :(得分:2)

当然,只需将第3行更改为

./runnable input.aa >output <<EOF

>是输出重定向运算符 - 它将标准输出发送到指定文件。

如果您还想捕获标准错误(通常是错误消息等),请使用

./runnable input.aa >output 2>errput <<EOF

代替。或者你可以使用

将它们混合在同一个文件中
./runnable input.aa >alloutput 2>&1 <<EOF

答案 1 :(得分:2)

David suggestion的补充是通过tee管理您的命令。这允许您将输出转储到文件同时查看它(对交互式方案很有用)。

答案 2 :(得分:1)

因为runnable期待输入。在开始here documents之前,您无法使用输出重定向。

您必须执行以下操作才能将runnable的输出发送到单独的文件。

#!/bin/bash

OUTFILE=file3.txt
(
./runnable input.aa << EOF
2
4
3
4
3
3
2
EOF
) > $OUTFILE