Ich versuche also, ein Skript zu erstellen, um ein zufälliges Passwort mit bestimmten Kriterien zu generieren, aber aus irgendeinem Grund werden einige meiner Integerwerte nicht als solche angezeigt. Hier ist das Skript:
#!/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
Die Fehlermeldungen, die ich bekomme, sind:
Zeile 15: [: : ganzzahliger Ausdruck erwartet
Zeile 22: [: : ganzzahliger Ausdruck erwartet
Antwort1
Ihre 2. Zeile ist falsch. Sie müsste lauten:
PASSWORDLENGTH=$(shuf -i 8-16 -n 1)
und reduzieren Sie die Anführungszeichen in Zeile 15 und 22 ""
auf eins ."
PS: Verwenden Sie pwgen
oder apg
, erfinden Sie das Rad nicht neu.