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

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

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

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

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

od -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 ++ style -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, когда вы хотите сгенерировать случайное число.

Ссылка на основную публикацию
Adblock
detector