Лучше проверить, меньше ли $ RANDOM заданного числа. Если вы выбрали 10000,
if [ $RANDOM -le 10000 ]; then echo "YES" >> ~/result.txt fi
Сделаем трюк. Конечно, вы можете выбрать другой номер. («-le» означает «меньше или равно»).
У меня есть сценарий, который я планирую запускать ежедневно с Cron. Тем не менее, я хочу, чтобы определенный раздел скрипта запускался случайным образом с определенной вероятностью выполнения в любой день.
Вот моя основная идея.
используйте $ RANDOM и вырезайте, чтобы получить одну случайную цифру:
echo $RANDOM | cut -c1
используйте тест if / then для оценки этой цифры и выполняйте только тогда, когда она соответствует определенному значению:
if [(echo $RANDOM | cut -c1) = 3]; then echo "YES" >> ~/result.txt fi
Однако это не работает. Сценарий завершается ошибкой со следующим:
./testscript: line 3: syntax error near unexpected token `echo' ./testscript: line 3: `if [(echo $RANDOM | cut -c1) = 3]; then'
Я думаю, что идея правильна, но я предполагаю, что я неправильно понимаю синтаксис.
Есть идеи?
Использование bash на Mac OSX 10.7.2
Возможно, интересная заметка: я бегал echo $RANDOM | cut -c1
100 000 раз, а затем определил частоту, с которой появляется каждая цифра, поэтому, используя эту функцию, я могу настроить частоту выполнения сценария, выбрав соответствующие значения. Интересно, что распределение цифр на первый взгляд подчиняется закону Бенфорда ...
Лучше проверить, меньше ли $ RANDOM заданного числа. Если вы выбрали 10000,
if [ $RANDOM -le 10000 ]; then echo "YES" >> ~/result.txt fi
Сделаем трюк. Конечно, вы можете выбрать другой номер. («-le» означает «меньше или равно»).
использование
if [ "$(echo $RANDOM | cut -c1)" = 3 ]; then echo "YES" >> ~/result.txt fi
или даже
[ "$" = 3 ] && echo "YES" >> ~/result.txt