【问题标题】:Output of command in Bash script to Drop-down box?Bash脚本中的命令输出到下拉框?
【发布时间】:2011-08-02 15:21:47
【问题描述】:

首先,感谢您在回答这个问题时提供的任何帮助。 我在 bash 脚本中有一个命令,它将输出以下内容:

255 254 253 252 ... 7 6 5 4 3 2 1 

这是一个特定的数字列表,从最大的(我想要的)开始,然后到最小的。数据集是空格分隔的。上面的输出(包括所有数字除外)是您在 linux 机器上的终端中或通过 bash 脚本运行此命令时所看到的。

我已将我的 apache2 服务器配置为允许通过 cgi-bin 目录使用 cgi/bash。当我在网络上的 bash 文件中运行此命令时,我得到了预期的输出。

我正在寻找一种能够将这些数字分别作为一个单独的条目放入下拉框中以供选择的方法,这意味着用户可以从其中选择一个数据点(例如 254)下拉菜单。

我不确定我在做什么,所以任何帮助将不胜感激。我不确定是否需要将数据转换为数组,或者什么。下拉菜单可以在 bash 脚本的同一页面上,但无论它在哪里,它都必须在每次运行时从命令中更新它的数字列表。

感谢您的帮助。

【问题讨论】:

  • 哇,我以为脚本不能从 cgi-bin 执行,只能从二进制文件执行。
  • @Basilevs 不,脚本运行良好。
  • @Basilevs 运行脚本时,您运行的是二进制文件,即解释器。
  • Let_Me_Be,cap,Apache 对二进制位置的安全影响如何?
  • @Michael,你问的是 bash 还是 HTML?

标签: bash apache2 terminal cgi cgi-bin


【解决方案1】:

我一直觉得这个网站在摆弄 shell 脚本时很有用:http://tldp.org/LDP/abs/html/

您必须使用某种字符串操作(使用空格作为分隔符)将输出放入数组中,然后循环遍历该数组以构建一些 html 输出 - 因此返回值基本上只会在页面上输出您的选择框你在哪里执行你的 cgi/bash 脚本。

-肖恩

【讨论】:

    【解决方案2】:

    重复答案(因为原来的问题被标记为重复):

    您可以编写一个 bash for 循环来完成所有操作。这只是打印出元素:

    for i in `seq 1 "${#x[*]}"`; do
        echo "|${x[i]} |"
    done
    

    要使对齐正确,您需要计算出最大长度(一个循环),然后打印出术语:

    # w will be the length
    w=0
    for i in `seq 1 "${#x[*]}"`; do
        if [ $w -lt ${#x[$i]} ]; then w=${#x[$i]}; fi
    done
    for i in `seq 1 $((w+2))`; do printf "%s" "-"; done
    printf "\n"
    for i in `seq 1 "${#x[*]}"`; do
        printf "|%-$ws |\n" ${#x[$i]}
    done
    for i in `seq 1 $((w+2))`; do printf "%s" "-"; done
    printf "\n"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多