すべての stdout と errout を、dateTime などの追加情報とともにログに記録するロガー スクリプトに転送したいと思います。スクリプトがエラーを引き起こしました。グーグルで調べた後、最終的にこの方法でbashプログラムを作成しました。メインスクリプトに次の2行を追加しました。
exec 1> >(xargs ./doLog)
exec 2> >(xargs ./doLog)
./doLog はどういうわけか次のようになります。
if [ -n $1 ]
then
echo -n "Jaky: `date`: $@ " >> $Log_File
fi
したがって、1> と 2> からのすべての入力を受け取り、それをログ ファイルにエコーします。問題は、何らかの理由で doLog スクリプトを同じ結果を実行する関数に変換する必要があることです。しかし、exec 1 と 2 の入力を関数に渡す方法がわかりません。xargs やその他のファイル記述子を試しましたが、結果が得られませんでした。
もう 1 つの問題は、doLog に渡されるログに行末文字が含まれていないことです。そのため、すべての出力が互いに接続されているように見えます。助けてください。