带有 if 和 else 条件的随机数生成器的脚本编写

带有 if 和 else 条件的随机数生成器的脚本编写

我已经写了 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

我改变了问题本身的数字,但您可以应用任何数字。

相关内容