我正在尝试生成具有某些要求的密码。 当我进入while循环以从数组生成一个随机字符时,我可以添加我的索引“$ i”的计数
使用以下代码:
#!/bin/bash
#SET ARRAY VALUES
all=( 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 W X Y Z )
echo
#SET COUNT VALUES TO 0
numc=0
lowc=0
upc=0
i=0
while true;
do
#GENERATE PASSWORD
phrase[$i]=${all[$RANDOM%62]}
#CHECK IF PASSWORD MEETS REQUIREMENTS
for ((n=0; n<10; n++))
do
if [ ${phrase[$i]} == ${all[$n]} ]
then
echo num ${all[$n]}
let "numc++"
let "i++"
fi
done
我收到错误“第39行:[:==:一元运算符预期”
但如果删除let "i++"
行,则没有错误。但我需要增加索引以退出循环并检查密码的最小长度
答案 0 :(得分:2)
如果${phrase[$i]}
(在$
上下文[$i]
工作中也不需要${phrase[i]}
),那么if
就是空字符串} test将成为[ == value-of-all-n ]
,这不是有效的测试。
引用变量(这几乎总是正确的事情)或防止它变成空字符串。 (i++
是否应该在内循环之外发生?)