Bash彩色输出不终止问题:密码校验器后续输出仍保留配色
问题原因
- 你没有定义重置终端颜色的ANSI转义序列变量
clear,终端设置完红绿颜色后没有收到重置指令,就会一直沿用当前配色输出后续所有内容 - 不合规的逻辑分支里,你输出红色密码后完全没有加重置颜色的代码,连你未定义的
${clear}都没写,所以后续输出的$RESULT也会继承红色配色
修复方案
- 首先定义颜色重置序列变量
clear,取值为\033[0m,作用是让终端配色恢复到默认状态 - 在所有彩色内容输出完成的位置,立刻插入
${clear}重置颜色 - 可以顺带去掉变量前后多余的空格,避免输出内容出现不必要的空白
修正后的完整代码如下:
# 定义颜色变量,新增重置颜色的clear变量 green='\033[0;32m' red='\033[0;31m' clear='\033[0m' if [[ $valid1 == true && $valid2 == true && $valid3 == false ]]; then # 输出绿色密码后立刻重置颜色 echo -e "Your password is valid! ${green}${PASSWORD}${clear}!" else # 输出红色密码后立刻重置颜色 echo -e "Your password is NOT valid! ${red}${PASSWORD}${clear}!" echo "$RESULT" fi
内容的提问来源于stack exchange,提问作者Eylon Levi
相关产品推荐
相关产品推荐

