Как установить переменные bash на случайные числа



Попробуйте наш инструмент устранения неполадок

Вы можете легко сгенерировать случайное число в приглашении bash, которое затем можно использовать для установки указанного числа в качестве переменной. Это полезно для всего, от написания определенных типов сценариев до запуска настольных ролевых приключений. Независимо от того, пишете ли вы кампанию D&D или разрабатываете утилиту на мощном языке bash, обычно вы можете обойтись одной строчкой кода. Это также очень полезный инструмент при попытке выполнить определенные проверки безопасности, но вы должны помнить, что хорошие взломщики могут обойти эти простые генераторы чисел. Они по-прежнему полезны для генерации определенных типов паролей и кода, которые в любом случае могут помочь защитить вещи.



Есть несколько разных способов добиться этого, и не каждый метод подходит для каждой ситуации, поэтому мы постарались изучить каждый из них и протестировать, чтобы убедиться, что он работает. Для этого вам нужно будет работать с терминала, поэтому используйте Ctrl + Alt + T или Super (Windows) + T, чтобы открыть графический терминал, запустите его, набрав терминал в Dash, выберите его из приложения или Whisker и меню «Инструменты системы» или зайдите в виртуальный терминал, используя Ctrl, Alt и клавишу между F1 и F6.



Метод 1: выбор полного случайного байта

Вы можете сгенерировать случайное число от 1 до 256, выполнив следующую команду прямо из командной строки bash:



из -An -N1 -tu1 / dev / urandom

Хотя иногда вы можете видеть, что эта команда ссылается на / dev / random вместо / dev / urandom, вам, вероятно, не захочется запускать таким образом. Это может непреднамеренно лишить другие программы возможности использовать генератор случайных чисел во время его использования. После того, как вы запустите программу и получите номер, можете быть уверены, что она будет работать и так:



ranNum=$(($(od -An -N1 -tu1 /dev/urandom)))

Это установит для переменной ranNum число от 1 до 256, выбранное во время ее запуска. Вы можете запустить его из командной строки или внутри сценария, и он должен работать в любом случае. Имейте в виду, что вы можете заменить ranNum любым допустимым именем переменной.

Метод 2: установка переменной на случайное число от 1 до любого другого

Вы можете запустить echo $ [RANDOM% 40 + 1] из командной строки, чтобы отправить случайное число от 1 до 40 прямо на стандартный вывод, но вы также можете заменить 40 в команде практически любым числом. В конце концов в архитектуре вашей хост-машины закончатся цифры или, возможно, bash, но вряд ли вам все равно понадобится такое большое количество.

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

ranNum = $ [СЛУЧАЙНОЕ% 10 + 1]

Имейте в виду, что вы можете заменить 10 любым верхним значением, которое хотите. Это значение является включительным, что означает, что 10 - допустимое возвращаемое число. Если вы хотите уменьшить его на единицу, просто установите значение 9 вместо использования математики стиля C или C ++ -1. В них нет необходимости при установке переменной с помощью этого метода, и они фактически приведут к неожиданным результатам за счет добавления или вычитания цифр.

Метод 3: выбор одного случайного бита

Если вам нужно установить для переменной случайный бит, равный нулю или единице, вы можете изменить предыдущий код следующим образом:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Этот код установит для ranNum значение 1 или 0 в зависимости от того, выбираются ли числа из / dev / urandom файл были четными или нечетными. Это может быть полезно, если вам нужно задать простое уравнение «да» или «нет» для одного или другого состояния.

Если это недостаточно случайное число для того, над чем вы работаете, вы можете получить немного более случайное число, вызвав каталог / proc / sys / kernel / random с помощью:

ranNum = $ ((0x $ (вырезать -c1-1 / proc / sys / kernel / random / uuid)% 2))

Опять же, это только установит переменную на 1 или 0, что идеально подходит для двоичной логики, но не так полезно, когда вам может понадобиться более длинное число. Однако вы можете использовать любую из этих строк в сценарии bash, если вам это нужно. Этот второй вариант может быть лучше для ситуаций, когда первый также не работает.

Метод 4: создание сценариев bash для возврата случайных чисел

Если вы хотите иметь удобный инструмент для генерации случайного числа в любое время, вы можете создать для этого сценарий командной строки. Здесь используется не что иное, как стандартный язык bash, который есть в большинстве современных подсказок Linux, поэтому практически любой современный дистрибутив Linux и немало операционных систем на основе BSD должны справиться с этим нормально. Возможно, вы захотите использовать cd ~ / .local / bin, прежде чем идти дальше, чтобы убедиться, что у вас есть сценарий в месте, где вы можете выполнить его из любого места.

Для начала введите nano random или vi random, хотя вы можете использовать другое имя для своего скрипта, если хотите. Вы также можете использовать другой текстовый редактор, если хотите. Допустим, вы хотите создать такой, который при вводе в командной строке возвращал бы либо 1, либо 0. Введите следующее и нажмите Ctrl + O, чтобы сохранить его, если вы используете nano:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) echo $ ranNum

Введите Ctrl + X, чтобы выйти из текстового редактора, и, вернувшись в командную строку, используйте chmod + x random, чтобы сделать ваш скрипт пригодным для использования. Вы, конечно, можете использовать ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) или любую другую строку вместо ranNum = $ (($ RANDOM% 2)), чтобы вы могли точно контролировать, какое число вы хотите вернуть. Допустим, вы хотите регулярно выбирать число от 1 до 50. Измените текст сценария bash на:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] echo $ ranNum

Теперь вы можете легко запустить его из командной строки, набрав random всякий раз, когда вы хотите сгенерировать случайное число.

4 минуты на чтение