0

まず、この質問に答えてくださったすべての助けに感謝します。次を出力するbashスクリプトにコマンドがあります。

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

これは特定の数値のリストであり、最大のもの (これが私が望むものです) から始まり、次に最小のものへと続きます。データセットはスペース区切りです。上記の出力 (すべての数字を除く) は、Linux マシンのターミナルで、または bash スクリプトを介してこのコマンドを実行した場合に表示されるものです。

cgi-bin ディレクトリを介して cgi/bash を許可するように apache2 サーバーを構成しました。このコマンドを Web の bash ファイルで実行すると、期待どおりの出力が得られます。

私が探しているのは、これらの数値をそれぞれ別のエントリとしてドロップダウン ボックスに入力して選択できるようにする方法です。つまり、ユーザーはドロップダウンから 1 つのデータ ポイント (たとえば 254) を選択できます。メニュー。

私はこれで何をしているのかわからないので、助けていただければ幸いです。データを配列に変換する必要があるかどうか、または何をする必要があるかわかりません。ドロップダウン メニューは、bash スクリプトの同じページに配置できますが、それがどこにあっても、コマンドを実行するたびにその番号のリストを更新する必要があります。

ご協力ありがとうございました。

4

2 に答える 2

1

シェルスクリプトをいじるとき、私はいつもこのサイトが役に立つと思っていました: 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

配置を正しくするには、最大長 (1 ループ) を計算してから、項を出力する必要があります。

# 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 に答える