【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 2021-09-28
      • 2011-10-13
      • 1970-01-01
      • 2016-01-10
      • 2020-08-31
      • 1970-01-01
      相关资源
      最近更新 更多