Non so cosa faccia quel ${n:=1} ma prova così, da me funziona:
codice:
#!/bin/bash
for utente in Utente1 Utente2 Utente3 Utente4
do
# Genero una Password per ogni utente
MATRICE="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
LUNGHEZZA="8"
RANDOM=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }')
PASS=""
n=1
while [ "${n:=1}" -le "$LUNGHEZZA" ]
do
PASS="$PASS${MATRICE:$(($RANDOM%${#MATRICE})):1}"
let n+=1
done
# Mando a video l'accoppiata NomeUtente Password
echo "$utente" "$PASS"
done
exit 0
Tu prima non azzeravi la stringa PASS e non reinizializzavi il contatore n. Inoltre ho aggiunto l'inizializzazione di un nuovo seme casuale ad ogni giro.