ログファイルの各エントリにタイムスタンプを付加するこのbashスクリプトを持っていますが、それをkornシェル構文に変換することに固執しています。私はコーンシェルはサブシェルが好きではないと読んでいます。私は機能を利用しようとしましたが、うまく機能しませんでした。特に、exec
行全体をkorn構文に変換しようとしました。誰かが見て、私を助けてくれますか?kshのプロセス置換(stdoutを変更する)
#!/usr/bin/bash
exec > >(
while read line ; do
echo "$(date '+%Y%m%d %H:%M:%S') ${line}"
done > n.log
) 2>&1
echo 'first line; should have an initial timestamp'
sleep 2
echo 'printed two seconds later, should have a timestamp with a comparable offset'
ここをクリックしてください... http://unix.stackexchange.com/a/26797 –
** ** ** ** kshの実装はどれですか?これは、本物のDavid Korn ksh93とmkshまたはpdkshとの非常に異なる回答になるでしょう。 –
ところで、提供されるbashコードは本当に**本当に非効率的です( '$(date)'はサブシェルを起動し、そのサブシェルで外部サブプロセスを実行します。出力)。最新の(4.1?4.2?)バージョンのbashをprintfに組み込まれたネイティブstrftimeサポートとともに使用していた場合、このフィルタのパフォーマンスオーバーヘッドを大幅に削減できます。 –