我目前正在编写一个 Bash 脚本,该脚本模拟滚动多个 6 面骰子。这一切都发生在充当服务器的运行 Debian 的虚拟机中。本质上,我的网页通过使用查询字符串来确定要掷骰子的数量来模拟掷骰子。
例如,如果我的 URL 是 http://127.0.0.1/cgi-bin/rolldice.sh?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
的其余部分。
最佳答案
因为 ..
要求它的参数是文字,所以你必须使用 eval
来替换变量:
for i in $(eval "echo {1..$QUERY_STRING}"); do
或者如果你有 seq
命令,你可以这样做:
for i in $(seq 1 "$QUERY_STRING")
我推荐后者——使用 eval
和用户的输入是非常危险的。
关于linux - 使用 Bash 在动态网页上模拟掷骰子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073016/