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

One Solution collect form web for “Bash: Целочисленное выражение, ожидаемое от команды shuf и количества символов”

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

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

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

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

  • Стабильный сортировать файл по наличию упорядоченных подстрок на каждой строке
  • Сравнение нескольких строк в Bash
  • Что означает $ {var / a / b / \ c}?
  • подстановка параметров оболочки для переименования файлов
  • Измените известные слова 1 и 3 строки, сохраняя неизменное слово 2 постоянным
  • Изменение части строки в сценарии bash
  • Разделение аргумента командной строки bash
  • Преобразование MAC-адреса в локальный адрес ссылки с помощью bash
  • Команда для удаления части данных JSON из каждой строки?
  • Обработка строк строки bash bash
  • Замените строку в строке новой строкой (\ n) в Bash
  • полностью игнорировать строки, начинающиеся с определенного шаблона
  • Linux и Unix - лучшая ОС в мире.