複数の「echo STRING」コマンドを含むbashスクリプトがあります。ロガーを使用してSTRINGを記録したいのですが、まだ標準出力として印刷したいです。echo STRING | logger
明らかにそうではありません。
編集:echo STRING | tee >(logger)
そうでした。 >(COMMAND)は、プロセス入力を置き換えるプロセス置換です。
答え1
Bashでは、次のことができます。
logger(){
tee >(command logger)
}
logger
その後、前のようにパイプします。
Stephen Harrisが提案したように、カスタムロギング機能を使用してこれを実装するには、次のようにします。
logger(){
tee >(command logger)
}
echolog(){
printf '%s\n' "$@" | logger
}
答え2
私は通常、次のようなロギング関数を書きます。
mylog()
{
echo "$@"
echo "$@" | logger
}
mylog "Hello, world!"
記録したいコンテンツに柔軟性を提供し、必要に応じて行の前にタイムスタンプを追加するなどのこともできます。