Я изо всех сил пытался понять эту строку кода, может ли кто-нибудь мне помочь?
для того, что я понял, od означает преобразование вывода в восьмеричный формат, -Я думаю, что это означает входную базу, которая не является адресом, но почему? а -N - это длина
если бы кто-то мог помочь перевести это, пока синтаксис, я был бы признателен
n=$((`od -An -N1 -i /dev/random` %100 ))
@stickybit: IIUC, OP не хочет переводить эту строку на Bash, они хотят понять, что это значит.
Лучше написал n=$((RANDOM % 100))
кстати.
od -An -N1 -i /dev/random
берет один байт (-N1
) ввода из /dev/random
, обрабатывает его как целое число со знаком (-i
) и не использует базу адресов (-An
) (это делается для отключения строки заголовка, которую обычно выводит od). Запуск только этого даст вам случайное число от 0 до 255.
Помещение этой команды в обратные кавычки "`" помещает вывод od в командную строку.
$((x % y))
вычисляет x по модулю y, где x — результат od, а y — 100 в вашем примере.
Наконец, результат помещается в переменную n
, к которой вы можете получить доступ, используя, например. echo $n
Я весьма признателен!! Это было то, что я искал, большое спасибо!!
Это работает для меня в bash (и ksh, и оба они вызываются как sh), поэтому синтаксически это кажется нормальным, нет необходимости «переводить» его в bash как таковой. Возможно, он не делает то, что вы хотите, но тогда нам нужно знать, что вы хотите, чтобы он делал, чтобы помочь вам.