echoステートメントの出力をパラメータとして関数に渡すには?

echoステートメントの出力をパラメータとして関数に渡すには?

${1}次の例では、echoステートメントの出力を引数()としてロガー関数に渡したいと思います。

logfile=./testlog

`touch ${logfile}`

function logger(){
  echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}

echo "started executing script" | logger

ベストアンサー1

Aside:logger標準 Unix (POSIX) ユーティリティです。混乱を避けるために別の名前を選択できます。

一つのためにプログラムを使用できます| xargs -d '\n' logger。これには、必要に応じて「shebang」行を使用して関数をスクリプトファイルに書き直すことが含まれますが、スクリプトの正しい環境をすべて提供することは困難です。

関数の場合、パラメータを渡す唯一の方法はパラメータを渡すことです。最初の関数をラップするために2番目の関数を書くことができます。名前を変更しましたlogger1

logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }

echo this is some log info | logger2

あるいは、まずread関数を入力として渡すこともできます。ほとんどのシステムでは、実際のロギングツールが実行するようにループを作成し、複数行(提供されている場合)を処理することもできます。

おすすめ記事