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

  • получить части строки, используя сценарий оболочки
  • Условие оболочки C Shell, если строка содержит символ новой строки
  • Как извлечь часть имени файла в сценарий оболочки unix / linux
  • Замена шаблона строкой
  • Как я могу использовать строковые манипуляции для обнаружения и удаления двух разных частей строки?
  • Как разбить строку на управляющий символ?
  • Как преобразовать строку с кодами символов в цитированную форму
  • Строка Bash заменяет несколько символов одним
  • One Solution collect form web for “Bash: Целочисленное выражение, ожидаемое от команды shuf и количества символов”

    Ваша вторая строка неверна. Должен быть:

     PASSWORDLENGTH=$(shuf -i 8-16 -n 1) 

    и сжимать двойные кавычки "" одному " в строке 15 и 22.

    ps: используйте apg или apg , не изобретайте велосипед.

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