${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
関数を入力として渡すこともできます。ほとんどのシステムでは、実際のロギングツールが実行するようにループを作成し、複数行(提供されている場合)を処理することもできます。
答え2
echoステートメントを関数の中に入れます。
logfile=./testlog
`touch ${logfile}`
function logger()
{
echo "$@"
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
logger "started executing scirpt"