echo ステートメントの出力を関数の引数として渡すにはどうすればよいでしょうか?

echo ステートメントの出力を関数の引数として渡すにはどうすればよいでしょうか?

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

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"

関連情報