2009-08-03 19 views
0

私はbashスクリプトを書くのが初めてです(あまり良くありません)。私の質問で説明できる助けを得ることができれば幸いです。bashスクリプトと標準入力で実行可能な実行ファイルの出力を記録する方法は?

以下は、input.aaを引数として持つ./runnable(実行可能ファイル)への標準入力を提供するために書いたbashスクリプトです。私はこの./runnable input.aaの出力を別のファイル、例えば出力に記録したい。コードを再構築する方法に関する提案はありますか?スクリプトに何か問題がある場合は、提案を削除してください。

#!/bin/bash 

./runnable input.aa <<EOF 

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

答えて

1

runnableが入力を待っているので。 here documentsを開始する前に出力リダイレクトを使用することはできません。

runnableの出力を別のファイルに送信するには、次の手順を実行する必要があります。

#!/bin/bash 

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

確かに、ちょうど

./runnable input.aa >output <<EOF 

>に3行を変更すると、出力リダイレクト演算子である - それはという名前のファイルに標準出力を送信します。その後、

あなたにも(通常はエラーメッセージなど)を標準エラーをキャプチャしたい場合は、代わりに

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

を使用しています。それとも、

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

@David:お返事ありがとうございました! :) – shubster

+0

OPは、そのコマンド全体を実行したときの出力の出力リダイレクションを必要としています。出力リダイレクション演算子はコマンド全体の後に来ます。 – Omnipresent

2

Davidのsuggestionは、パイプにteeを通して、あなたのコマンドであることに加えて、それらに同じファイル内の両方の混在を得ることができます。これにより、出力をファイルに同時にダンプすることができます(対話シナリオで役立ちます)。

関連する問題