使用Bash在动态网页上模拟滚动骰子

时间:2014-04-15 01:13:38

标签: linux bash cgi debian

我正在制作一个Bash脚本,模拟滚动多个6面骰子。这一切都发生在运行Debian的虚拟机中,该虚拟机充当服务器。基本上,我的网页通过使用查询字符串模拟滚动骰子来确定要掷骰子的数量。

例如,如果我的网址是http://127.0.0.1/cgi-bin/rolldice.sh?6,我希望网页上写着“你滚动了6个骰子”,然后在下一行打印6到1和6之间的数字(当然“随机“生成”。

目前,打印出“You rolled x dice”标题工作正常。但是,我在下一部分遇到了麻烦。我对Bash很新,所以语法或类似的东西可能与我的循环有关。这是:

for i in {1..$QUERY_STRING }; do
      dieRoll = $(( $RANDOM % 6 + 1))
      echo $dieRoll
done

任何人都可以帮我弄明白我哪里错了吗?如果需要,我会很乐意发布剩余的rolldice.sh

1 个答案:

答案 0 :(得分:1)

由于..要求其参数为文字,因此必须使用eval替换变量:

for i in $(eval "echo {1..$QUERY_STRING}"); do

或者如果你有seq命令,你可以这样做:

for i in $(seq 1 "$QUERY_STRING")

我建议使用后者 - 使用来自用户的输入eval是非常危险的。