gpt4 book ai didi

arrays - 如何比较 bash 脚本中的数组值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:37 25 4
gpt4 key购买 nike

我正在尝试生成具有特定要求的随 secret 码。

Minimum 8 characters

Atleast 1 lowercase letter

atleast 1 uppercase letter

atleast 1 number

must have 1 special character

Atm 我正在尝试将我生成的随 secret 码短语与数字数组进行比较,以便我可以确定生成的密码短语中是否存在数字。让它工作后,我想对其他数组(小写、大写和特殊字符)使用类似的检查。

然而,当我运行我的脚本时 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]}" ]

关于arrays - 如何比较 bash 脚本中的数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com