Bash: Vom Shuf-Befehl und der Zeichenanzahl wird ein ganzzahliger Ausdruck erwartet

Bash: Vom Shuf-Befehl und der Zeichenanzahl wird ein ganzzahliger Ausdruck erwartet

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 pwgenoder apg, erfinden Sie das Rad nicht neu.

verwandte Informationen