我正在编写脚本以检查密码是否具有大写字母,但始终显示出它具有大写字母。
我尝试使用
if [[ $password =~ [A-Z] ]]; then
echo "Contains Upper Case"
但是它总是打印出来。
这是我的脚本:
read -p "Enter Password: " password
if [ ${#password} -lt 8 ]; then
echo "TOO SHORT , MAN! "
fi
if [[ $password =~ [A-Z] ]]; then
echo "Contains Upper Case"
fi
答案 0 :(得分:1)
请勿使用[A-Z]
。它仅在某些语言设置/语言环境中有效(排序看起来像ABCD...Zabcd...z
,像AaBb...Zz
一样)
为使代码在任何地方都能正常工作,请改用[[:upper:]]
。
#!/usr/bin/env bash
[ -n "$BASH_VERSION" ] || { echo "ERROR: Shell is not bash" >&2; exit 1; }
if [[ $password =~ [[:upper:]] ]]; then
echo "Contains at least one upper-case character"
else
echo "Does not contain one or more upper-case characters"
fi