![带有 if 和 else 条件的随机数生成器的脚本编写](https://linux22.com/image/922969/%E5%B8%A6%E6%9C%89%20if%20%E5%92%8C%20else%20%E6%9D%A1%E4%BB%B6%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99.png)
我已经写了 2 个脚本,感谢大家对我的帮助。
现在我想写一个脚本,以1:4的比例随机运行这2个脚本。我的文件名为1.sh和2.sh。
我想生成一个从 1 到 4 的数字,然后使用 if 条件,这样如果生成的数字是 1,则运行 1.sh,否则运行 2.sh。我写了下面的脚本,但它不起作用,我认为 if 条件行有问题,你能帮我解决这个问题吗?
va1=$((1 + RANDOM % 4))
if va1= 1 ; then bash 1.sh; else bash 2.sh; fi
最后,我想运行这个脚本 4500 次。所以我将这个脚本保存为 random.sh
然后我会在终端中写入:
for i in {1..4500}; do bash random.sh; done
请帮我编写 random.sh 脚本,因为我的 if 条件行中缺少某些内容,因此它不起作用。我编写的运行脚本 4500 次的行是否正确?最后,是否可以运行一个脚本,该脚本反过来将运行 2 个脚本,它们都位于同一目录中。
答案1
以 4 分之一的概率运行 4500 次迭代:
#!/bin/bash
declare -A a=()
b=4500
for ((c=1; c<$b; c++)); do
(($RANDOM < 8192)) && ((a[if]++)) || ((a[else]++))
done
for d in if else; do
LC_ALL=C printf "%4s ~ %0.2f%%\n" \
$d $(bc -l <<< "100 / ($b / ${a[$d]})")
done
答案2
我做到了 :)
# 后面是澄清
va1=$((1 + RANDOM % 2497))
#I generate a random number from 1 to 2497
if [ $va1 -gt 29 ]
#If the generated number is greater than 29
then
bash C60.sh
# then run the script C60.sh
else
bash TAPC.sh
#If any number less than 29 or 29 itself then run TAPC.sh
fi
#end of the if statement
我改变了问题本身的数字,但您可以应用任何数字。