2012-04-18 6 views
0

私のロジックが言うことができないことを実装しようとしています。しかし、なぜそれができないのか理解するためにあなたの助けが必要です。ログファイルでstdout + stderrを取得する

質問のショートバージョン

それはファイルのリダイレクト(> &やティー)を使用せずに、CSHのスクリプトの標準出力+標準エラー出力をログに記録することが可能です。質問

私は、ファイルのリダイレクトを使用することはできません午前のcshスクリプト(SCRIPT1)との要件を持っているの


詳細な説明は。(私はで理由を与えます は、だから、私は

echo just checking >& logfile 

のようなものを使用することはできません)しながら、それゆえ私はこのまたはティートンを使用することはできませんo自分のログファイルを作成する。 私はまた、トップレベルのスクリプトである別のスクリプト(script2)を持っています。

script1をスタンドアロンモードで実行することも、script2で実行することもできます。

どちらの場合でも、logfileにscript1のログ(stdout + stderr)を作成する必要があります。

はその

書き込み用の2つの可能な(しかし完全ではない)オプションスクリプト2

./script1 >& logfile 

でこのラインがあります。しかしSCRIPT1をスタンドアロンモードで実行されたとき、私はログファイルでSCRIPT1をログに記録することはできません。あなたは、2つの欠点です。この場合

echo test starting >> logfile 
echo test over 

別のオプションは、次のようにSCRIPT1でファイルリダイレクトを使用することです「試験開始」の前にプリント 1)「オーバーテスト」、発生の順序、すなわちコマンドログの内容が不明です。 2)スクリプト全体をカバーするつもりなら、すべてのステートメントの後に>> &を入れるのは面倒です。

他の方法がありますが、私は必要なものを手に入れることができます。つまり、私はファイルリダイレクトなしでscript1を実行して、stdout + stderrをログファイルに記録することができます。

+0

には、私は理解していません。 「私はファイルリダイレクトを使用することは許されていませんが、もう1つの選択肢はscript1でファイルリダイレクトを使用することです」と言っています。他のオプションは、あなたが使用を許可されていない例とまったく同じように見えます。 –

+0

私ははっきりしないのは残念です。 "別のオプション.."で私はなぜ私は通常のファイルリダイレクトを使用することができない理由を説明していた、それは望ましい出力を与えない。 入力がさらに必要な場合は、私に連絡してください。 – Ani

答えて

2

あなたはcshに言及していますので、これはあなたを助けません。もう1つは、cshをスクリプトに使用することをやめさせることです。これは悪名高いタスクです。 SHでは、あなたは、単に行うことができます。

#!/bin/sh 
exec > logfile 2>&1 
echo foo 

FOOを書き込むには(と出力と後続のすべてのコマンドのエラー)ログファイル

+0

残念ながら私はcsh/tcsh以外は使用できません。 私はあなたの答えに感謝しています。 したがって、exec文はcshで動作しません。 – Ani

関連する問題