第 39 行:[: ==: 预期的一元运算符
line 39: [: ==: unary operator expected
我正在尝试生成符合特定要求的密码。
当我进入 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
我收到错误 "line 39: [: ==: unary operator expected"
但如果我删除 let "i++"
行,则不会出现错误。但是我需要增加索引才能退出循环并检查密码的最小长度
如果 ${phrase[$i]}
(顺便说一句,您不需要 [$i]
上下文 ${phrase[i]}
中的 $
也可以工作)是 [=14= 的空字符串] 测试将变为 [ == value-of-all-n ]
,这不是有效测试。
要么引用变量(这几乎总是正确的做法),要么防止它成为空字符串。 (i++
应该在内循环之外发生吗?)
我正在尝试生成符合特定要求的密码。 当我进入 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
我收到错误 "line 39: [: ==: unary operator expected"
但如果我删除 let "i++"
行,则不会出现错误。但是我需要增加索引才能退出循环并检查密码的最小长度
如果 ${phrase[$i]}
(顺便说一句,您不需要 [$i]
上下文 ${phrase[i]}
中的 $
也可以工作)是 [=14= 的空字符串] 测试将变为 [ == value-of-all-n ]
,这不是有效测试。
要么引用变量(这几乎总是正确的做法),要么防止它成为空字符串。 (i++
应该在内循环之外发生吗?)