The scenario is that
I have a shell script that run a few complicated command with different parameters and options.
Those parameters and options are passed by third party applications, such that I may not know exactly what parameters and options are passed each time to the shell script
So in order to know that, i use set -x at the start of the shell script to see what exactly the command is running. And i wanna move those debugger message from set -x to the syslog using logger.
i use trap to do
trap "logger $(BASH_COMMAND)" DEBUG
However the output of the syslog does not have the exact command it is running but sth like that..
apple=1
orange=2
command $apple $orange
………………………..
but i wanna the output of the log should be
command 1 2
how can i achieve?
Here is a way:
We are redirecting stderr (set -x routes to stderr, file descriptor 2) to the logger program.
In my /var/log/messages I get: