0

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

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

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

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

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

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

谢谢您的帮助。

4

2 回答 2

1

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

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

-肖恩

于 2011-08-02T15:53:09.760 回答
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"
于 2011-08-13T02:55:21.227 回答