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

У меня была аналогичная проблема с моим сканером (все в одном Brother MFC-j410) на Ubuntu 14.04 32 бит. Сканер работал только после запуска XSANE во второй раз, а затем только один просмотр или сканирование операции. Я попытался изменить порты USB на usb 2.0 безрезультатно. Моя материнская плата - Asus B85M-k с чипом Intel i3 LGA1150.

Я попробовал виртуальный бокс с предыдущей версией Ubuntu, где сканер всегда работал на другом ПК. Тем не менее, не повезло, что сделало меня очень подозрительным в отношении возможностей usb 3. Принтер также дал мне несколько предупреждений, но напечатал.

после чтения этого порта

USB 3.0 управляется драйвером xhci_hcd в Linux. Когда включен режим предварительной загрузки XHCI, BIOS направит порты USB 3.0 на контроллер USB3 xHCI. Когда он отключен, порты USB 3.0 направляются на порты EHCI (USB 2.0). Формулировка «режим предварительной загрузки» подразумевает, что эта опция влияет только на среду перед загрузкой полной операционной системы (соответствующий текст справки BIOS явно упоминает, что этот параметр используется для поддержки USB3 в MSDOS); однако, похоже, это также может повлиять на среду после загрузки и может привести к подключению портов USB 3.0 к контроллеру USB 2.0 даже после загрузки Linux (так что порты работают со скоростью USB2).

[d5 ] Я вошел в свой BIOS и в расширенных настройках нашел и изменил USB 3.0 с включенным XHCI, чтобы отключиться, и появилась другая настройка для usb 2 (я думаю, это был EHCI) от включенного к отключенному или наоборот, извините, что я не Не помню. Во всяком случае, после перезагрузки в Ubuntu 14.04 32 бит все работало нормально.

1
задан 19 January 2017 в 15:14

3 ответа

Вы можете использовать shuf

DESCRIPTION
     Write a random permutation of the input lines to standard output.

     -i, --input-range=LO-HI
            treat each number LO through HI as an input line
     -n, --head-count=COUNT
            output at most COUNT lines

Пример:

$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
13
ответ дан 23 May 2018 в 02:17

Как насчет:

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

Или даже:

r=$(($(od -An -N1 -i /dev/random) % 2))

Или, возможно:

r=$(seq 0 1 | sort -R  | head -n 1)

Или более взломанно:

r=$(($(head -128 /dev/urandom | cksum | cut -c1-10) % 2))

А также:

r=$(apg -a 1 -M n -n 1 -m 8 -E 23456789  | cut -c1)

Также как:

r=$((0x$(cut -c1-1 /proc/sys/kernel/random/uuid) % 2))
5
ответ дан 23 May 2018 в 02:17

Этот скрипт не имеет преимуществ по сравнению с существующими ответами. Просто для развлекательных целей ...

Получить один байт из /dev/urandom (хотя вообще отправка произвольных двоичных символов в консоль не рекомендуется ™, потому что это может дать неожиданные / запутывающие результаты):

[ f1]

И включите в десятичное число:

head -c 1 /dev/urandom | od -An -t u1

И получите оставшуюся часть его деления на 2:

echo $((`head -c 1 /dev/urandom | od -An -t u1` % 2))
1
ответ дан 23 May 2018 в 02:17

Другие вопросы по тегам:

Похожие вопросы: