让脚本时不时随机执行一个命令

让脚本时不时随机执行一个命令

我有一个脚本,计划使用 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 -c1100,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”表示小于或等于)。

相关内容