2009-08-03 55 views
0

我是新来编写bash脚本(并不是很好)。所以,如果我可以得到一些关于我的问题的解释性帮助,那就太好了。如何记录用bash脚本和标准输入运行的可执行文件的输出?

以下是我编写的用于为./runnable(可执行文件)提供标准输入的bash脚本,该输入携带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 

回答

1

因为可运行期望输入。在启动here documents之前,您无法使用输出重定向。

您将不得不执行以下操作将runnable的输出发送到单独的文件。

#!/bin/bash 

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

当然,只是改变线3

./runnable input.aa >output <<EOF 

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

如果你想捕捉标准错误以及(通常为错误信息等),然后使用

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

代替。或者你可以让他们在同一个文件中混杂有

./runnable input.aa >alloutput 2>&1 <<EOF 
+0

@David:感谢您的及时回复! :) – shubster 2009-08-03 21:43:58

2

的除了大卫的suggestion是管通过tee你的命令。这允许您将输出转储到文件同时看到它(对于交互式场景很有用)。

相关问题