use
if [ "$(echo $RANDOM | cut -c1)" = 3 ]; then
echo "YES" >> ~/result.txt
fi
ou até mesmo
[ "${RANDOM:0:1}" = 3 ] && echo "YES" >> ~/result.txt
Eu tenho um script que estou programando para rodar diariamente com o Cron. No entanto, quero que uma determinada seção do script seja executada aleatoriamente ocasionalmente, com uma certa probabilidade de execução em qualquer dia.
Aqui está minha ideia básica.
use $ RANDOM e corte para obter um único dígito aleatório:
echo $RANDOM | cut -c1
use um teste if / then para avaliar esse dígito e execute somente quando ele corresponder a um determinado valor:
if [(echo $RANDOM | cut -c1) = 3]; then
echo "YES" >> ~/result.txt
fi
No entanto, isso não está funcionando. O script falha com o seguinte:
./testscript: line 3: syntax error near unexpected token 'echo'
./testscript: line 3: 'if [(echo $RANDOM | cut -c1) = 3]; then'
Acho que a ideia é boa, mas estou supondo que estou com a sintaxe errada.
Alguma idéia?
Usando o bash no Mac OSX 10.7.2
Sidenote possivelmente interessante: Corri echo $RANDOM | cut -c1
100.000 vezes e, em seguida, calculei a frequência com que cada dígito aparece, portanto, usando isso, posso ajustar a frequência com que o script é executado selecionando os valores apropriados. Curiosamente, a distribuição de dígitos à primeira vista parece obedecer à Lei de Benford ...
É melhor testar se $ RANDOM é menor que um determinado número. Se você escolheu 10000,
if [ $RANDOM -le 10000 ]; then
echo "YES" >> ~/result.txt
fi
Vai fazer o truque. Claro que você pode escolher um número diferente. ("-le" significa menor que-ou-igual).