我正在写一个滚动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?
提前致谢!
答案 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}"