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