bash - while循环 - 滚动2个骰子

时间:2015-11-04 01:38:17

标签: bash shell unix

我正在写一个滚动2个骰子(有6个边)的bash脚本。当2个骰子达到双六时,我希望脚本停止(中断)并计算获得双六的卷数。

#!/bin/bash
DOUBLESIX="6-6"

while (( 0 ==0 )) ; do
     dice=$RANDOM; ((dice = dice % 6 )); (( dice = dice +1 ))
     dice2=$RANDOM; ((dice2 = dice2 % 6 )); (( dice = dice + 1))

pair="$dice-dice$2"
echo $pair

if [[ "$pair" == "$DOUBLESIX" ]]; then
      break
fi

done

echo "It took $count rolls to get 6-6 "

这是我到目前为止所拥有的。问题是,如何计算while循环运行的次数并将其放入$ count?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我不会过多地评论您对代码的其他潜在问题,例如dice$2“变量”,或者您可以生成一个介于1到6之间的随机数的事实更简单((num = $RANDOM % 6 + 1)) - 修复/改进这些的学习过程将使你成为一个更好的程序员。

但是,对于如何维持计数的具体问题,这是相对简单的。在循环开始之前,插入以下代码以将计数初始化为零:

((count = 0))

然后,对于两个骰子的每一卷,使用以下内容增加计数:

((count = count + 1))

下面是一个如何做到这一点的例子。这是从一到十的计数,但你应该得到这个想法:

((count = 1))
while [[ ${count} -le 10 ]] ; do
    echo $count
    ((count = count + 1))
done

对于它的价值(如果这是一个课堂作业问题,不要使用它,你会觉得教育工作者不会在网上搜索抄袭,你会疯狂),这就是我如何实现这样的野兽:

#!/bin/bash

DESIRED="6-6"
((count = 0))
dice="NOT ${DESIRED}"
while [[ "${dice}" != "${DESIRED}" ]] ; do
    ((count = count + 1))
    ((die1 = $RANDOM % 6 + 1))
    ((die2 = $RANDOM % 6 + 1))
    dice="${die1}-${die2}"
    echo ${dice}
done

echo "It took ${count} rolls to get ${DESIRED}"