bash - 向 bash 脚本添加 Debug模式

标签 bash debugging date redirect

首先,抱歉我的英语不好。

我想启用带有日期的 Debug模式。我正在考虑使用一种重定向类型或另一种类型的变量,如下所示:

#!/bin/bash

DEBUG_MODE=1

if [ $CHAMAC_DEBUG = 0 ]; then
output=/dev/null
elif [ $CHAMAC_DEBUG = 1 ]; then
output=>( while read line; do echo "$(date): ${line}"; done >> ~/output.log )
fi

echo "hi, im a echo" &> $output

但它对我不起作用......怎么办呢?????

最佳答案

我不太确定“ Debug模式”是什么意思,但是如果您想仅在定义特定变量时打印附加输出,您可以这样做:

#!/bin/bash

function print_debug {
  [ $DEBUG_MODE -eq 1 ] && echo "$(date) $1"
}

DEBUG_MODE=0
print_debug "Test 1"
DEBUG_MODE=1
print_debug "Test 2"

输出:

$ <b>./test.sh</b>
Test 2

您还可以通过将调试消息回显到不同的文件描述符来将调试输出与常规输出分开:

function print_debug {
  [ $DEBUG_MODE -eq 1 ] && echo "$1" 1>&3
}

这样您就可以根据需要将 STDOUT、STDERR 和调试输出重定向到不同的文件。

关于bash - 向 bash 脚本添加 Debug模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880648/

相关文章:

loops - sas 从变量循环一个月

node.js - Mongoose 以 ddmmyyyy 格式保存日期

linux - 如何使用 awk 创建包含字段范围的 csv 文件

mysql - 把MySQL命令输出放到一个变量里,也打印在屏幕上?

bash - 将命令的输出写入 csv 文件的特定列,unix

Android 手机无法通过 USB 在 Ubuntu/Windows 上识别

javascript - 调试 SystemJS 模块加载?

c++ - 在 VC++2010 环境之外运行时程序立即崩溃

date - parse_dates 不适用于默认日期时间格式

arrays - 在 bash 中将一行(包含字符串和整数)转换为整数数组