Я хочу создать простой диалог с bash-dialog. Я работаю с (X) DSL и bash-3.2. Последняя (X) DSL основана на Linux 2.4.31 и поставляется с bash-2.05, однако bash-3.2 загружается из MyDSL/Testing. Итак, мой скрипт работает под «#!/Bin/bash-3.2/bin/bash».пространства bash в пунктах меню whiptail/dialog
Элементы меню, которые пользователи могут выбрать из базы данных.
Пример файла базы данных «якорей»:
Внутреннее освещение | Освещение для использования в помещениях
Наружное освещение | Освещение для наружного применения
Я извлечь данные в массив «опции 'из файла арматуры:
options = ($ (awk -F "|"' { печать $ 1, $ 2}»якорей)
и в терминале 'эхо' массива:
эхо $ {опции [@]}
, который показывает:
«Крытые арматуры» «Освещение для внутреннего использования» «Наружные арматуры» «Освещение для наружного применения»
Это выглядит нормально, чтобы использовать в качестве меню выбора «whiptail», но это не так.Командная строка:
Хлыстохвост --clear --title "Арматура" --menu "Выберите якорь" 50 80 10 $ {опции [@]}
шоу:
column1-cOLUMN2
Indoor-Armatures
Lighting-за
Закрытый использование
Outdoor-Armatures
Lighting-за
наружного применения
в смену:
COLUMN1-COLUMN2
Ind ООКИ якоря-Lighting для внутреннего использования
Открытых якорей-Ligthing для наружного применения
кажется, что элементы массива с двойными кавычками игнорируются или не видели «Хлыстохвост». Я также попробовал «$ {options [@]}», но это всегда приводит к первому слову «Крытый».
Помимо «whiptail», я попробовал «диалог», но они такие же: информация о версии показывает «cdialog (ComeOn Dialog!) Версия 1.1-20080316» в обоих случаях.
У меня очень ограниченные ресурсы и я не хочу рисковать (пока) в «xdialog», «zenity», «dzen» и тому подобное, даже если это решит это. Я также ограничен Linux 2.4.31 из-за XDSL (для XBOX).
Я много просматриваю в Интернете, но безрезультатно. Каким может быть решение с «whiptail/dialog»?
Спасибо! Разбор симуляции нелегко понять, но ваше объяснение помогает. Однако существует одна проблема с кодом, который вы предлагаете: последняя запись не отображается в «whiptail», то есть в приведенном выше примере показана только первая запись. Добавив дополнительную запись с помощью только «|», обе записи отображаются в «whiptail». Как я мог избежать добавления дополнительных «|» запись? – linuph
@linuph: Последняя строка в базе данных, вероятно, не завершена (т. Е. Не имеет символа перевода строки в конце); Я добавил тест для запуска цикла для любой непустой строки, даже если она не завершена. BTW, это говорит о том, что файл базы данных не находится в стандартном формате текстового файла unix и может быть в формате DOS вместо этого, и в этом случае в конце каждой строки будет отображаться символ непечатаемого символа каретки (и он будет ветром вверх в конце каждой записи col2). Если это так, есть способы его фильтрации ... –
У меня нет двойных кавычек в базе данных, так что все в порядке. Я проверю завершение последней строки. Еще раз спасибо! – linuph