Linux 在shell脚本中,如何在shell命令执行到标准输出(非标准错误)时回显它们?

Linux 在shell脚本中,如何在shell命令执行到标准输出(非标准错误)时回显它们?,linux,shell,cron,Linux,Shell,Cron,我想编写一个简单的cron作业包装器,通过以下方式扩展本机cron: 它仅在作业打印到标准错误或作业的返回代码不是0时发送电子邮件。 它将所有执行的命令及其输出记录到日志文件中。 这是我的问题,我希望在cron job中执行的所有命令都记录在上面的项目符号2中,但是/bin/bash-x job.sh或set-x inside job.sh会触发上面的警告电子邮件中断项目符号1。来自bash1手册页: BASH_XTRACEFD 如果设置为与有效文件描述符对应的整数, bash将写入set-x启

我想编写一个简单的cron作业包装器,通过以下方式扩展本机cron:

它仅在作业打印到标准错误或作业的返回代码不是0时发送电子邮件。 它将所有执行的命令及其输出记录到日志文件中。 这是我的问题,我希望在cron job中执行的所有命令都记录在上面的项目符号2中,但是/bin/bash-x job.sh或set-x inside job.sh会触发上面的警告电子邮件中断项目符号1。

来自bash1手册页:

BASH_XTRACEFD

如果设置为与有效文件描述符对应的整数, bash将写入set-x启用时生成的跟踪输出 启用该文件描述符。文件描述符已关闭 当BASH_XTRACEFD未设置或分配了新值时。令人不安 BASH_XTRACEFD或为其分配空字符串会导致跟踪 要发送到标准错误的输出。请注意,设置 BASH_XTRACEFD到2标准错误文件描述符,然后 取消设置它将导致关闭标准错误

BASH_XTRACEFD=1
set -x