我正在制作一个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
。
答案 0 :(得分:1)
由于..
要求其参数为文字,因此必须使用eval
替换变量:
for i in $(eval "echo {1..$QUERY_STRING}"); do
或者如果你有seq
命令,你可以这样做:
for i in $(seq 1 "$QUERY_STRING")
我建议使用后者 - 使用来自用户的输入eval
是非常危险的。