これは私のパスワードジェネレータです。 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
密接に関連した質問に対する回答として提供したものと同じフレームワークを使用して文字を生成します。このパスワードジェネレータで1つの特殊文字のみを生成する方法質問、
word=
for ((i=0; i<len; i++))
do
thischar=(Generate one character by whatever logic you like)
word="$word$thischar"
done
echo "$word"
あなたの好みに合った文字グループを配布できるように個々の文字を生成する方法を決定します。これはあなたの質問の範囲外であり、あなたの要件を作成することに関連しています(例:あなたの問題)あなたのため。