Introduzione
Il costrutto Bash Select viene utilizzato per creare un menu numerato dall'elenco di elementi.
Sintassi
L' istruzione select ha una sintassi simile a quella di "for loop" ed è:
select ITEM in [List]
do
[commands]
done
Qui l'elenco può essere un array, un intervallo di numeri, una serie di stringhe separate da spazio, l'output di un comando, ecc. E quando verrà invocato il costrutto select, ogni elemento dell'elenco verrà stampato con una sequenza numerata. Il costrutto continuerà a essere eseguito fino all'esecuzione del comando break.
Esempio Bash Select
Comprendiamo il costrutto select con un esempio. Qui abbiamo creato uno script bash chiamato brand.sh e il comando select viene utilizzato per recuperare i dati dall'elenco come menu. Lo script stamperà prima il nome di tutte le marche presenti nell'elenco e poi chiederà all'utente di sceglierne una e stamperà il nome della marca selezionata:
#!/bin/bash
select brand in Apple Google Microsoft Amazon Meta
do
echo "You have chosen $brand"
done
Esegui lo script con ' bash brand.sh '. Vedrai il seguente output:
1) Apple
2) Google
3) Microsoft
4) Amazon
5) Meta
#? 1
You have chosen Apple
#? 3
You have chosen Microsoft
#? ^C
Premi CTRL+C per uscire.
Un altro esempio
Prendiamo un altro esempio del costrutto select per vedere come funziona con un'istruzione case.
Qui creeremo un nuovo file chiamato select.sh e una volta eseguito il file, l'utente selezionerà qualsiasi elemento, quindi l'istruzione case abbinerà l'elemento con il valore del caso. Se non viene trovato alcun valore , verrà stampato "Voce non valida":
#!/bin/bash
echo "Which Operating System do you like?"
select os in Ubuntu LinuxMint Windows8 Windows7 WindowsXP
do
case $os in
"Ubuntu"|"LinuxMint")
echo "I also use $os."
;;
"Windows8" | "Windows10" | "WindowsXP")
echo "Why don't you try Linux?"
;;
*)
echo "Invalid entry."
break
;;
esac
done
Ora esegui lo script con bash select.sh e vedrai il seguente output.
1) Ubuntu 3) Fedora 5) Windows7
2) LinuxMint 4) Windows8 6) WindowsXP
#? 1
I also use Ubuntu.
#? 2
I also use LinuxMint.
#? 4
Why don't you try Linux?
#? 7
Invalid entry.
Conclusione
Questa guida ti spiega come usare il comando select negli script bash.