奇怪的问题。当我在Bash中设置一个变量以显示为特定颜色时,我不知道如何重置它。以下是一个示例:
首先定义颜色代码:
现在设置错误消息变量并将其颜色标识出来。
这将把变量ERROR设置为函数返回的错误消息,最终在终端上显示。除文件名外,错误消息将全部为白色。为了让用户更容易看到,文件名会被突出显示为黄色。
这种方法非常有效,但在使用rsyslog进行日志记录时会出现问题。当错误消息被记录时,输出的内容如下所示:
File not found: #033[33mLength.db#033(B#033[m
这显然使日志文件非常难以阅读。起初我认为可以在输出到终端之前但在记录日志之前立即处理错误消息,但没有任何可搜索和替换的内容。也就是说,我认为可以使用sed来执行类似于以下操作的操作:
首先定义颜色代码:
YELLOW=$(tput setaf 3)
RESET=$(tput sgr0)
现在设置错误消息变量并将其颜色标识出来。
ERROR="File not found: "$YELLOW"Length.db$RESET"
这将把变量ERROR设置为函数返回的错误消息,最终在终端上显示。除文件名外,错误消息将全部为白色。为了让用户更容易看到,文件名会被突出显示为黄色。
这种方法非常有效,但在使用rsyslog进行日志记录时会出现问题。当错误消息被记录时,输出的内容如下所示:
File not found: #033[33mLength.db#033(B#033[m
这显然使日志文件非常难以阅读。起初我认为可以在输出到终端之前但在记录日志之前立即处理错误消息,但没有任何可搜索和替换的内容。也就是说,我认为可以使用sed来执行类似于以下操作的操作:
ERROR=$(echo "$ERROR" | sed -r 's%\#033\[33m%%')
但是当你打印变量时,这些字符不会出现(因为在终端上看不到它)。所以我陷入了困境。我不知道如何在设置变量后重置变量的颜色。我也尝试使用$RESET反转该过程,但可能我的语法有误或其他原因。