Bash: Целочисленное выражение, ожидаемое от команды shuf и количества символов

Поэтому я пытаюсь создать скрипт для генерации случайного пароля с определенными критериями, но по какой-то причине некоторые из моих целых значений не отображаются как таковые. Вот сценарий:

#!/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: [:: ожидается целочисленное выражение

Linux и Unix - лучшая ОС в мире.