Bashではすべてリダイレクトできます。未来標準出力に出力現在実行中スクリプト。たとえば、このスクリプトを使用すると
exec > >(logger -t my-awesome-script)
echo 1
echo 2
echo 3
これはシステムログに記録されます。
Oct 26 01:03:16 mybox my-awesome-script[72754]: 1
Oct 26 01:03:16 mybox my-awesome-script[72754]: 2
Oct 26 01:03:16 mybox my-awesome-script[72754]: 3
ただし、これはBashに固有のものであり、リダイレクトを含むデフォルトのランチャーはDashでは機能しないようです。
Syntax error: redirection unexpected
Dashまたは両方のシェルで動作させるにはどうすればよいですか?
ベストアンサー1
次のことができます。
{ commands
....
} | logger -t my_awesome_script
これを行うには、すべてのシェルを使用できます。
外観が気に入らない場合は、スクリプトを関数でラップすることもできます。
#!/bin/sh
run() if [ "$run" != "$$" ] || return
then sh -c 'run=$$ exec "$0" "$@"' "$0" "$@" |
logger -t my-awesome-script
fi
#script-body
run "$@" || do stuff