Могу ли я изменить способ отображения параметров выбора?

Я работаю с select и case в bash. В настоящее время у меня есть девять опций, которые делают приятную, аккуратную сетку 3×3, но она выглядит так:

1) show all elements 4) write to file 7) clear elements 2) add elements 5) generate lines 8) choose file 3) load file 6) clear file 9) exit 

Я бы предпочел, чтобы он отображался в строках перед столбцами:

 1) show all elements 2) add elements 3) load file 4) write to file 5) generate lines 6) clear file 7) clear elements 8) choose file 9) exit 

Есть ли способ сделать это? Предпочтительно, что-то легко установить и удалить в сценарии, например, в оболочке. Если это имеет значение, параметры сохраняются в массиве и упоминаются в блоках case по индексу массива.

 OPTIONS=("show all elements" "add elements" "load file" "write to file" "generate lines" "clear file" "clear elements" "choose file" "exit") ... select opt in "${OPTIONS[@]}" do case $opt in "${OPTIONS[0]}") ... "${OPTIONS[8]}") echo "Bye bye!" exit 0 break ;; *) echo "Please enter a valid option." esac done 

One Solution collect form web for “Могу ли я изменить способ отображения параметров выбора?”

Создайте свой собственный «select»:

 #!/bin/bash options=("show all elements" "add elements" "load file" "write to file" "generate lines" "clear file" "clear elements" "choose file" "exit") width=25 cols=3 for ((i=0;i<${#options[@]};i++)); do string="$(($i+1))) ${options[$i]}" printf "%s" "$string" printf "%$(($width-${#string}))s" " " [[ $(((i+1)%$cols)) -eq 0 ]] && echo done while true; do echo read -p '#? ' opt case $opt in 1) echo "${options[$opt-1]}" ;; 2) echo "${options[$opt-1]}" ;; 9) echo "Bye bye!" break ;; esac done 

Вывод:

 1) показать все элементы 2) добавить элементы 3) загрузить файл             
 4) записать в файл 5) создать строки 6) очистить файл            
 7) очистить элементы 8) выбрать файл 9) выйти                  
 #? 
  • linux curl POST запрос не работает
  • Передайте команду ROOT из сценария оболочки и оставив ее открытой
  • Как удалить папки, созданные с именами дат 2016-04-03 до 2016-10-4
  • Функция, вызывающая другую функцию со списком аргументов, не работает
  • Как остановить бесконечную функцию цикла, вызванную с помощью myFunc &
  • Строка, сравниваемая с подстановочными знаками
  • `sudo -u user script` даже не имеет доступа к / bin / sleep
  • Скопировать файлы по дате / времени, указанному в имени файла?
  • Тайм-аут скриптов с использованием USBMount
  • wget не останавливается
  • Как вставить строку в массив по-разному
  • Interesting Posts

    Обновить переменные env после редактирования файла bashrc

    Установленное местоположение пакета FreeBSD

    Является ли перенос файлов между телефоном Android и Linux, который должен быть простой задачей?

    Как использовать команду cat для отображения содержимого текстового файла с пронумерованными параграфами?

    linux – окна не перекрашиваются, если не растягиваются

    Справка, Ubuntu выходит из строя ненормально

    создать статический IP-адрес Ethernet на artik10

    переименовать несколько файлов с помощью команды rename?

    Удаление столбцов из файла

    Является ли массив хранения ZFS переносимым для всех операционных систем и архитектур процессоров?

    Присоединенные трубопроводы

    Fedora 20, сценарий запуска с сетевыми настройками работает правильно, но без реального эффекта

    Проблемы с новой установкой Ubuntu

    Могу ли я использовать разделы, созданные Windows 7 в Linux?

    Что такое корреляция пользователя / usr / share?

    Linux и Unix - лучшая ОС в мире.