1

У меня есть сценарий, который я планирую запускать ежедневно с 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 раз, а затем определите частоту, с которой появляется каждая цифра, поэтому с помощью этого я могу настроить частоту, с которой выполняется скрипт, выбрав соответствующие значения. Интересно, что распределение цифр на первый взгляд подчиняется закону Бенфорда ...

2 ответа2

3

Лучше проверить, меньше ли $ RANDOM заданного числа. Если вы выбрали 10000,

if [ $RANDOM -le 10000 ]; then
    echo "YES" >> ~/result.txt 
fi 

Сделаем трюк. Конечно, вы можете выбрать другой номер. («-le» означает «меньше или равно»).

1

использование

if [ "$(echo $RANDOM | cut -c1)" = 3 ]; then
    echo "YES" >> ~/result.txt
fi

или даже

[ "${RANDOM:0:1}" = 3 ] && echo "YES" >> ~/result.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .