小编Gle*_*enn的帖子

重定向和记录脚本输出

我正在尝试整理以下片段,设计目标是记录脚本的所有输出,而不应该是包装器。线越少越好。

我不关心用户输入(在这个阶段),目标脚本以非交互方式运行。

片段需要

  • 输出标准输出到日志,并始终回显到控制台
  • 如果启用了调试,则输出 stderr 到日志,并回显到控制台
  • stderr 消息应该以时间戳和其他用途为前缀

目前,我有以下内容仅在最新版本的 bash (4.2+?) 下测试,如 Ubuntu 精确,但在 CentOS6 上行为不端。

DEBUG_LOG="${0##*/}.log"

# copy stdout to log always and echo to console
exec >  >(tee -a ${DEBUG_LOG})           

# copy stderr to log only, unless debugging is enabled
[ $DEBUG_TEST = "true" ] \
  && exec 2> >(tee -a ${DEBUG_LOG} >&2) \
  || exec 2>> ${DEBUG_LOG}
Run Code Online (Sandbox Code Playgroud)

那么这...

# Expand escaped characters, wrap at 70 chars on spaces, 
# and indent wrapped lines
msg_log() { 
  echo …
Run Code Online (Sandbox Code Playgroud)

bash logs shell-script exec

8
推荐指数
1
解决办法
5774
查看次数

标签 统计

bash ×1

exec ×1

logs ×1

shell-script ×1