因此,我嘗試創建一個腳本來產生具有特定條件的隨機密碼,但由於某種原因,我的一些整數值沒有這樣顯示。這是腳本:
#!/bin/bash
PASSWORDLENGTH= shuf -i 8-16 -n 1
RNDSOURCE=/dev/urandom
L="acdefghjklmnopqrstuvwxyz"
U="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
N="012345679"
S='@#$%&*+-='
ALL="$L$U$N"
function rndindex() { echo $(($RANDOM % ${#1})); }
password="${L:$(rndindex $L):1}${U:$(rndindex $U):1}${N:$(rndindex $N):1}${S:$(rndindex $S):1}"
password=$password${ALL:$(rndindex $S):1}
while [ "${#password}" -lt "$PASSWORDLENGTH"" ] #Line 15
do
password=$password${ALL:$(rndindex $ALL):1}
done
chars=$password
password=""
while [ "${#password}" -lt "$PASSWORDLENGTH"" ] #Line 22
do
n=$(rndindex $chars)
ch=${chars:$n:1}
password="$password$ch"
if [ $n = $(( ${#chars} - 1 )) ]; then
chars="${chars:0:$n}"
elif [ $n = 0 ]; then
chars="${chars:1}"
else
chars="${chars:0:$n}${chars:$((n+1))}"
fi
done
echo $password
我收到的錯誤訊息是:
第 15 行: [: : 需要整數表達式
第 22 行: [: : 需要整數表達式
答案1
你的第二行是錯的。它應該是:
PASSWORDLENGTH=$(shuf -i 8-16 -n 1)
並將第 15 行和第 22 行中的雙引號縮小""
為一個。"
ps.:使用pwgen
or apg
,不要重新發明輪子。