【问题标题】:bash: colored output do not stopbash:彩色输出不会停止
【发布时间】:2021-12-23 17:11:15
【问题描述】:
我正在编写一个密码验证器,经过所有测试后,我需要向用户提供密码是否有效的答案。
如果有效,我会用绿色写密码
如果它无效,我会用红色写密码
我的问题是颜色不会停止,其余的输出也会是彩色的,例如:
您的密码无效! ffsdmkl !
您的密码必须至少包含 10 个字符,您的密码必须同时包含字母和数字
--> 从密码的开头到句子的结尾都是彩色的。
各位大侠,我该如何解决?
谢谢!!
green='\033[0;32m'
red='\033[0;31m'
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} !"
echo $RESULT
fi
【问题讨论】:
标签:
linux
bash
shell
passwords
【解决方案1】:
您还需要定义变量clear,并在文本不再有颜色时使用它。因为clear 也是一个 Bash 命令,所以我会将变量名称更改为其他名称,例如 reset:
green='\033[0;32m'
red='\033[0;31m'
reset='\e[0m'
if [[ $valid1 == true && $valid2 == true && $valid3 == false ]]; then
echo -e "Your password is valid! ${green}${PASSWORD} ${reset}!"
else
echo -e "Your password is NOT valid! ${red}${PASSWORD} ${reset}!"
echo $RESULT
fi
【解决方案2】:
试试这个:
green='\033[0;32m'
red='\033[0;31m'
reset='\u001b[0m'
if [[ $valid1 == true && $valid2 == true && $valid3 == false ]]; then
echo -e "Your password is valid! ${green} ${PASSWORD} ${reset}!"
else
echo -e "Your password is NOT valid! ${red} ${PASSWORD} ${reset}!"
echo $RESULT
fi