8 - 16 사이의 임의 길이의 비밀번호 생성(생성기가 있지만 동적이 아님)

8 - 16 사이의 임의 길이의 비밀번호 생성(생성기가 있지만 동적이 아님)

이것은 내 비밀번호 생성기이며 8자를 생성하고 섞습니다. 하지만 동적 길이로 만들어야 합니다. 어떻게 하면 될까요? 따라서 출력 길이는 8~16자 사이에서 달라집니다.

if [ $# -eq 0 ]; then
num=("0" "1" "2" "3" "4" "5" "7" "8" "9")
special=("@" "#" "$" "%" "*" "-" "+")
upper=(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)
lower=(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)
lower2=${#lower[*]}   #${lower[$((RANDOM%lower2))]}
upper2=${#upper[*]}   #${upper[$((RANDOM%upper2))]}
num2=${#num[*]}     #${num[$((RANDOM%num2))]}
special2=${#special[*]} #${special[$((RANDOM%special2))]}

echo "${special[$((RANDOM%special2))]}${num[$((RANDOM%num2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}" | fold -w 1 | shuf | tr -d '\n'
echo
fi

답변1

세트

len=$((8+RANDOM%9))

그런 다음 $len매우 밀접하게 관련된 질문에 대한 답변에서 제가 제공한 것과 같은 프레임워크를 사용하여 캐릭터를 생성합니다.이 비밀번호 생성기에서 하나의 특수 문자만 생성하는 방법질문,

word=
for ((i=0; i<len; i++))
do
    thischar=(Generate one character by whatever logic you like)
    word="$word$thischar"
done
echo "$word"

개별 캐릭터를 생성하는 방법을 결정하는 것은 여러분의 몫이므로 원하는 대로 캐릭터 그룹을 배포할 수 있습니다. 이는 귀하의 질문 범위를 벗어나며 귀하의 요구 사항을 작성하는 데 영향을 미칩니다(예:귀하의 질문) 당신을 위한.

관련 정보