2016-06-03 23 views
5

Ho creato un semplice menu di selezione in Bash. E 'attualmente la visualizzazione del menu orizzontale (con le schede) in questo modo:Bash Select Menu Formatting without Tabs

1) Create a VM from scratch 3) Command-line Usage 
2) Management Menu   4) Quit 

mi vuoi visualizzare la lista di simile a questa:

1) Create a VM from scratch 
2) Management Menu 
3) Command-line Usage  
4) Quit 

UPDATE: Qui è il mio codice:

PS3="Please choose a valid option : " 
OPTIONS=("Create a VM from scratch" "Management Menu" "Command-line Usage" "Quit") 
select opt in "${OPTIONS[@]}"; do 
    case $opt in 
      "Create a VM from scratch") 
       createit 
       exit 
       ;; 
      "Management Menu") 
       mgmtmenu 
       exit 
       ;; 
      "Command-line Usage ") 
       help 
       ;; 
      "Quit") 
       exit 
       ;; 
      *) echo invalid option;; 
    esac 
done 

Come visualizzare il menu di selezione con ciascuna opzione sulla propria linea?

+1

Potrebbe pubblicare il codice utilizzato per creare il menu corrente? Inoltre, [questo link] (http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-9.html) sembra rispondere ai tuoi requisiti. – Aaron

+0

@'Aaron: il collegamento fornito non risponde ai requisiti dell'op. Ho provato con 8 no. – sjsam

+1

Beh, potrebbero esserci alcune variabili d'ambiente che influenzano il modo in cui 'select' visualizza il suo menu. – Aaron

risposta

6

Bash definisce una variabile di ambiente $COLUMNS letta da select.

come si vede in bash di man:

COLUMNS 
     Used by the select compound command to determine the terminal 
     width when printing selection lists. Automatically set if the 
     checkwinsize option is enabled or in an interactive shell upon 
     receipt of a SIGWINCH. 
+0

Grazie mille! Quella pagina man bash è un po 'prolissa :) –

+0

Ottimo lavoro, ottima risposta :-) Interessantemente 'COLUMNS' non è definito di default nella mia shell. Appena aggiunto alla sceneggiatura e funziona come un fascino. :-) – sjsam

+0

@KenJ sì, l'ho trovato cercando 'select' ('/select' se il tuo cercapersone 'man' è' less') – Aaron