0

重複の可能性:
Bashスクリプトのコマンドをドロップダウンボックスに出力しますか?

bashスクリプトに配列があります。cgi-binディレクトリでcgi/bashスクリプトを実行できるように、apache2を設定しました。スクリプトは、Webページのように表示されます。

配列の各要素を取得して、ページ上のドロップダウンボックスに1つの結果を表示する方法はありますか?

たとえば、私の配列が次のようになっている場合:

a[0] = "255" 
a[1] = "254" 
a[2] = "253"
a[3] = "252"
a[4] = "251"

ドロップボックスを次のようにしたいと思います(笑、ASCII)

 _____
|255  |
|254  |
|253  |
|252  |
|251  |
 -----

助言がありますか?ご協力いただきありがとうございます。

4

2 に答える 2

0

bash for loopを記述して、すべてを実行できます。これは要素を出力するだけです:

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-02T16:39:14.877 に答える
0

少し単純な(しかしより冗長な)ソリューション:

box()
{
    local -a a=(1 20 300 4000 50000)
    local -i w=0

    for i in "${a[@]}"
    do
        [ $w -lt $i ] && w="${#i}"
    done

    printf -- '-%.s' $(seq $w)
    printf -- '---\n'

    for i in "${a[@]}"
    do
        printf -- '|%-'$w's |\n' $i
    done

    printf -- '-%.s' $(seq $w)
    printf -- '---\n'
}
于 2011-08-03T09:20:39.950 に答える