bash - 总是给出密码不够强的消息(否则条件正在运行)

标签 bash

我一直在 shell 脚本中研究这个功能,从用户那里获取密码并检查它是否满足有效密码的标准,但它总是说密码不够强。我尝试使用的密码是 LK@12abc

这是我的代码:

function paq()
{   

     read -p "PASSWORD :-" password

     pasq="^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$"

    if [[ $password =~ $pasq ]]; then
          echo "Valid password"
          echo "The password is:- $password" >> user1.txt
          echo "$password" >>password.txt
    else
          echo "password not strong enough"
    fi
}
paq

最佳答案

看来您的密码必须包含:

  • 3个小写字母
  • 2个大写字母
  • 2 位数
  • 1个标点符号
  • 恰好 8 个字符长

因此,使用 bash glob 模式:

if [[ $password == *[a-z]*[a-z]*[a-z]* ]] &&
   [[ $password == *[A-Z]*[A-Z]* ]] &&
   [[ $password == *[0-9]*[0-9]* ]] &&
   [[ $password == *[!@#$\&*]* ]] &&
   (( ${#password} == 8 ))
then
    echo password OK
else
    echo password does not satisfy criteria
fi

我很惊讶我需要在第 4 个测试中转义 &

关于bash - 总是给出密码不够强的消息(否则条件正在运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969013/

相关文章:

bash - 用 awk 或 sed 替换和递增字母和数字

linux - 使用或命令在两个目录上查找文件的 unix 顺序

linux - 测试 bash 中是否至少存在一个带有名称前缀的目录

bash - 生成一定范围的十六进制数

string - 如何在 Bash 中连接两个字符串而不使用变量?

正则表达式字符恰好出现 x 次

python - “If”语句和来自命令行的一行 Python 脚本

linux - 如何使用 image magick 编写将图像切割成碎片的 bash 脚本?

bash - 在终端中检测可用颜色以在 vim 中使用颜色方案的最优雅方法?

bash - docker入口点bash脚本中行首的冒号