linux - 使用 Bash 在动态网页上模拟掷骰子

标签 linux bash cgi debian

我目前正在编写一个 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/

相关文章:

json - 使用 jq 解析不带分隔符的 JSON 字符串

linux - 在 Perl 中覆盖 Excel 文件的现有工作表

bash - 如何从脚本向脚本发送信号 SIGINT?

c++ - 如何从用 MFC (MSVC 2008) 编写的应用程序查询基于 CGI 的网络服务器并处理结果?

linux - 在另一个比较中使用 bash 比较的结果

linux - openCV 中缺少 libcxcore.so.2

linux - 当网络出现故障时,使用 bash 自动重启 Raspberry PI 接口(interface)

bash - 如何在 HBase shell 中循环执行命令而不每次都调用 shell

perl - Web 服务器如何解释 ".cgi"?

python - 在 Windows XP 上运行 Python CGI 脚本