情景就是这样
我有一个shell脚本,它运行一些带有不同参数和选项的复杂命令.
这些参数和选项由第三方应用程序传递,这样我可能无法确切知道每次向shell脚本传递的参数和选项
所以为了知道这一点,我在shell脚本的开头使用set -x来查看命令运行的确切内容.我想使用logger将那些调试器消息从set -x移动到syslog.
我用陷阱来做
trap "logger $(BASH_COMMAND)" DEBUG
Run Code Online (Sandbox Code Playgroud)
但是,syslog的输出没有正在运行的确切命令,但是......就像那样......
apple=1
orange=2
command $apple $orange
Run Code Online (Sandbox Code Playgroud)
.............................
但我想要日志的输出应该是
command 1 2
Run Code Online (Sandbox Code Playgroud)
我怎么能实现?
这是一种方式:
#!/bin/bash
apple=1
orange=2
set -x
exec 2> >(logger)
echo $apple $orange
Run Code Online (Sandbox Code Playgroud)
我们将stderr(设置-x路由到stderr,文件描述符2)重定向到记录器程序.
在我的/ var/log/messages中,我得到:
Aug 23 08:16:07 yogi logger: + echo 1 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
754 次 |
最近记录: |