我想建立一個腳本,我需要創建一個具有以下參數的密碼生成器:如何在聲明數組使用RANDOM命令
- 必須至少8個字符長,但最長不超過16個字符。
- 必須包含至少1位數字(0-9)。
- 必須包含至少1個小寫字母。
- 必須包含至少1個大寫字母。
- 必須包含唯一的
@ # $ % & * + - =
我有兩個想法:
第一:
#!/bin/bash
#
#Password Generator
#
#
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''z''f''g''h''i''j''k''l''m''o'''p''q''r''s''t''u''v''w''x''y''z')
Numbers=('1''2''3''4''5''6''7''8''9')
SpecialChar=('@''#''$''%''&''*''+''-''=')
if [ S# -eq 0 ] ; then
Pwlength=`shuf -i 8-16 -n 1`
Password=`< /dev/urandom tr -dc A-Za-z0-9$SpecialChar | head -c $Pwlength`
echo "Random Password is being generated for you"
sleep 5
echo "Your new password is : $Password"
exit
問題是我得到的是我沒有連字符定義?
的謝勝利想法:
for((i=0;i<4;i++))
do
password=${Upper[$random % ${#Lower[@]} ] }
password=${Upper[$random % ${#Upper[@]} ] }
password=${Upper[$random % ${#Number[@]} ] }
password=${Upper[$random % ${#SpecialChar[@]} ] }
done
對於他們的一些原因,非正常工作;「 - 」字符到SpecialChar結束/
它是'$ RANDOM',而不是'$ random'。 – rici
'$ SpecialChar'不會擴展到數組''SpecialChar [@]}''的內容,並且因爲它包含了shell元字符,所以它需要像雙引號一樣引用,以便shell不響應這些元字符(展開任何通配符匹配等)。 – tripleee
真的,「睡眠5」有什麼意義? – tripleee