我正在尝试生成具有某些要求的随机密码。
最少8个字符
Atleast 1小写字母
至少1个大写字母
至少1个号码
必须具有1个特殊字符
Atm我正在尝试将生成的随机密码与数字数组进行比较,以便可以确定生成的密码中是否存在数字。使此工作正常后,我想对其他数组(小写,大写和特殊字符)使用类似的检查。
但是,当我运行脚本时,if $phrase[1] = F and $num[1] = 1
我的代码将回显"fine"
而不是回显false
...这两个值不相等,所以我不知道为什么它不起作用?
#!/bin/bash
#SET ARRAYS
num=( 0 1 2 3 4 5 6 7 8 9 )
all=( 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 W X Y Z 0 1 2 3 4 5 6 7 8 9 )
echo
#GENERATE RANDOM PASSPHRASE
for (( i=0; i<8; i++ ))
do
phrase[$i]=${all[$RANDOM%62]}
for (( j=0; j<10; j++ ))
do
#CHECK IF A VALUE FROM $NUM ARRAY IS IN $PHRASE
if [ ${phrase[$i]}==${num[$j]} ]
then
echo phrase[$i]: ${phrase[$i]} #debug
echo num[$j]: ${num[$j]} #debug
echo fine
else
echo false
fi
done
done
printf "%s" "Phrase: ${phrase[@]}" && echo
echo
echo ${num[@]}
echo
您需要在==
运算符周围留有空格。否则,bash只会看到一个大字并进行测试
[ -n "${phrase[$i]}==${num[$j]}" ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句