
這是我的密碼產生器,它產生 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
我剛剛整理出一個粗略的可能性(所以YMMV,但它至少是一個起點):
head /dev/urandom | tr -cd '[:alnum:]' | tail -c $(( $RANDOM % 8 + 8 ))
字元將是字母數字,因此您可能想嘗試tr
字元集。
產生的一些範例字串:
yoXvUVnHG7IIDe
tQGHN7g1rdtbtRO
jsguP1rmJ
CAcoVMK4Ij
KNHVxE8hO
XDkCgx1bN
pijB0Vgx
060qBI9X
LRxp4Ciiab4VCq
tJGYLpof
TVxMPIcjoCKnyA
JYUd4C83TOxr0N
pZaT0lZvNw3oAA
ojtsMD6Ic8E3
UBxtFUY1uy9eT