eval
ничего не сделает, так как $randompasswd
пусто.
Вы устанавливаете randompasswd
с помощью
randompasswd=$(cat /dev/urandom | tr -dc '1-9' | fold -w 1 | head -n 1 > $oncepass)
Команда внутри $(...)
не производит вывода (, поскольку вместо этого вывод перенаправляется в файл ), поэтому $randompasswd
будет пустой строкой.
Это хорошо, потому что я полагаю, что вы на самом деле не хотите запускать eval
на случайной строке символов?
Кроме того, существует ряд раскрытий переменных без кавычек, которые следует заключать в двойные кавычки, например $onlytail
в выраженииif
-(, если оно содержит пробелы, там будет синтаксическая ошибка ).
Больше я ничего не могу сказать, так как не знаю, что вы хотите делать с этим кодом.
Для создания потока паролей, состоящего из 12 буквенно-цифровых символов:
tr -dc '[:alnum:]' </dev/urandom | fold -w 12
Чтобы выбрать первый из них:
tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 1
Если вы хотите сгенерировать 100 уникальных паролей (и убедиться, что они уникальны):
while true; do
tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 100 | sort -u -o password.list
if [ "$( wc -l <password.list )" -eq 100 ]; then
break
fi
done
Это сначала генерирует 100 паролей и сортирует их (удаляя дубликаты ). Затем он проверяет, содержит ли результирующий файл 100 строк. Если нет, то все повторяется снова, иначе выходит из цикла. Файл password.list
будет перезаписан, если он существует.
Если у вас есть password.list
файл и вы хотите сгенерировать (и добавить )пароль, которого еще нет в этом файле:
while true; do
newpassword=$( tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 1 )
if ! grep -q -F "$newpassword" password.list; then
printf 'New password generated: %s\n' "$newpassword"
printf '%s\n' "$newpassword" >>password.list
break
fi
done
Нельзя, команда guix deploy
используется для управления только системой guix (GuixSD ).
Синтаксис:
guix deploy file
file
— это система конфигурации файл (объявление операционной системы ).