将Bash脚本中的命令输出到下拉框?

时间:2011-08-02 15:21:48

标签: bash apache2 terminal cgi cgi-bin

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

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

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

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我总是发现这个网站在摆弄shell脚本时很有用:http://tldp.org/LDP/abs/html/

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

-Sean

答案 1 :(得分:0)

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

你可以写一个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"