我有一个脚本,计划使用 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'
我认为这个想法是正确的,但我猜我的语法是错误的。
有任何想法吗?
在 Mac OSX 10.7.2 上使用 bash
可能有趣的旁注:我运行了echo $RANDOM | cut -c1
100,000 次,然后计算出每个数字出现的频率,因此我可以通过选择适当的值来调整脚本执行的频率。有趣的是,乍一看数字的分布似乎遵循本福特定律……
答案1
使用
if [ "$(echo $RANDOM | cut -c1)" = 3 ]; then
echo "YES" >> ~/result.txt
fi
甚至
[ "${RANDOM:0:1}" = 3 ] && echo "YES" >> ~/result.txt
答案2
最好测试一下 $RANDOM 是否小于给定的数字。如果你选择了 10000,
if [ $RANDOM -le 10000 ]; then
echo "YES" >> ~/result.txt
fi
可以解决问题。当然,您可以选择其他数字。(“-le”表示小于或等于)。