您好我正在尝试创建一个密码生成器来扫描字符串以查看它是否包含大写或小写字符。字符串的内容是使用一组字符生成的
char=(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V X W Y Z)
#chars=(~ ! @ # $ % ^ & * - +)
####rand2=$random % 11
max=${#char[*]} for i in `seq 1 $pwdlen`
do
let "rand=$RANDOM % $max"
str="${str}${char[$rand]}"
done echo $str exit 0 fi str=$1 len=${#str}
if [ $len -lt 8 ] then
echo $str is too short fi if [ $len -gt 16 ] then
echo $str is too long fi
答案 0 :(得分:1)
如果字符串包含至少一个大写字符,则使用正则表达式(正则表达式)进行检查:
if [[ "$str" =~ [[:upper:]] ]]; then
echo "uppercase character found"
fi
使用正则表达式检查字符串是否包含至少一个小写字符:
if [[ "$str" =~ [[:lower:]] ]]; then
echo "lowercase character found"
fi
答案 1 :(得分:0)
检查字符串是否包含至少1个大写字符:
[[ "$str" == *[[:upper:]]* ]] && echo "one uppercase character exists"
检查字符串是否包含至少1个小写字符:
[[ "$str" == *[[:lower:]]* ]] && echo "one lowercase character exists"
答案 2 :(得分:0)
您可以使用bash
案例转换操作。
if [[ $passwd = ${passwd,,} ]]; then
echo "$passwd" has no upper-case letters
fi
if [[ $passwd = ${passwd^^} ]]; then
echo "$passwd" has no lower-case letters
fi
第一个表达式 - ${passwd,,}
- 将所有大写字母转换为小写字母,因此如果它没有改变任何内容,则没有大写字母。同样,${passwd^^}
会将小写字母转换为大写字母。
需要bash 4。
答案 3 :(得分:0)
尝试在条件过滤器上使用ascii字符代码..在其他情况下也适用于需要检查数字,小写字符等的其他情况
echo $password | while read -n1 char
do
ascii_code=$(printf "%d\n" \'$char)
if [ $ascii_code -ge 65 ] && [ $ascii_code -le 90 ]; then
echo "Found $char : $ascii_code"
fi
done