Вывод команды в скрипте Bash в раскрывающийся список? - PullRequest
0 голосов
/ 02 августа 2011

Прежде всего, я ценю любую помощь в ответе на этот вопрос.У меня есть команда в bash-скрипте, которая выведет следующее:

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

Это определенный список чисел, начиная с самого большого (что я и хотел бы), затем заканчивая самым маленьким.Набор данных разделен пробелами.Вывод выше (за исключением включения всех чисел), это то, что вы увидите, если вы выполнили эту команду в терминале на машине с Linux или через скрипт bash.

Я настроил свой сервер apache2 для разрешения cgi/ bash через каталог cgi-bin.Когда я запускаю эту команду в файле bash из Интернета, я получаю ожидаемый результат.

Мне нужен способ, позволяющий поместить эти числа в отдельную запись в капле.- окно выбора, означающее, что пользователь может выбрать одну точку данных (например, 254) из выпадающего меню.

Я не уверен, что я делаю с этим, поэтому любая помощь будетбыть оцененнымЯ не уверен, если мне нужно преобразовать данные в массив, или что.Выпадающее меню может находиться на той же странице скрипта bash, но где бы оно ни находилось, оно должно обновлять свой список чисел из команды при каждом запуске.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Я всегда находил этот сайт полезным, когда возился со скриптами оболочки: http://tldp.org/LDP/abs/html/

вам придется выводить данные в массив, используя какие-то операции со строками, используя пробелы в качестве разделителей, затемЗацикливайтесь на этом, чтобы создать вывод html - поэтому возвращаемое значение будет просто выводить поле выбора на странице, где вы выполняете свой скрипт cgi / bash.

-sean

0 голосов
/ 13 августа 2011

Повторение ответа (поскольку исходный вопрос был помечен как дубликат):

вы можете написать цикл для выполнения всего.Это просто распечатывает элементы:

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"
...