我一直在 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/