を更新しないI stdoutとログファイルにティースクリプトの出力に次のbashコマンドを持っています。それは動作し、私はライブ出力を見ることができます。しかし、日付は変わりません。 execが動的な方法で日付を評価するよう指示する方法はありますか?bashのティースクリプトの出力をファイルにし、標準出力は、タイムスタンプ
#!/bin/bash
LOGFILE="/tmp/te/script.log"
exec 1> >(stdbuf -e 0 -o 0 sed "s/^/$(date '+[%F %T]'): /" | tee -a ${LOGFILE}) 2>&1
echo "Started"
sleep 2
echo "Done sleeping"
sleep 2
echo "Another sleep"
sleep 2
echo "Done"
あなたはbashの4.1以降をお持ちの場合おかげ
完全に予想されます。 'sed'は* once *で開始され、' date'は* once *実行されます - あなたはそれが他の方法ではないことを望みます。外部ツールを呼び出すのは非常に遅いので、コンテンツの実行が速い場合は、ログ処理が必ずしも追いつかなくなる可能性があります。 –