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

Я работаю с 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) выйти                  
 #? 
  • Возможно ли иметь комментарии в многострочных командах в рыбе?
  • Получать файлы с сервера SFTP и управлять ими в памяти
  • надежный код возврата фонового процесса
  • Как я могу автоматически вводить пароль из .bash_profile при запуске команды в качестве sudo?
  • for loop для запуска команды для всех файлов в папке
  • Что делает оболочку интерпретировать эти перенаправления следующим образом?
  • Выход Cronjob в журнал
  • Выполнить команду перед выключением
  • Как заставить excel интерпретировать китайские символы в CSV-файле
  • Tmux Split Panes в том же окне
  • Как я могу запускать сценарии командной оболочки Linux, которым нужна привилегия root с веб-страницы
  • Interesting Posts

    Выход трубопровода между двумя одновременными независимыми программами

    Linux Mint занимает 18,2 Cinamon слишком много времени, чтобы отключить

    fprintd-enroll работает только с правым указательным пальцем

    В чем разница между who> lp и who | LP?

    Почему мой скрипт Bash возвращает синтаксическую ошибку?

    Как подключиться через LAN-провод и WIFI-маршрутизатор к Интернету (только терминал)

    Vim: подсчитывать все вхождения (в том числе несколько в одной строке) символа или слова

    Что означает -S означает в gksu -S mount …?

    Почему Linux по умолчанию плохо работает по сравнению с Windows?

    Вывести изменения в файл журнала

    Что такое linux-swap в GParted?

    Как избавиться от подчеркивания при вводе команд в zsh?

    Преобразование таблицы csv в HTML

    Почему в журналах отображается другой порт подключения ssh #, чем указанный?

    ACL – то же самое имя acl для всех вновь созданных файлов автоматически

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