#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
Fügen Sie break
Anweisungen hinzu, wo immer Sie die select
Schleife zum Beenden benötigen . Wenn a break
nicht ausgeführt wird, wird die select
Anweisung wiederholt und das Menü erneut angezeigt.
In der dritten Option habe ich Variablen eingefügt, die durch die select
Anweisung festgelegt werden, um zu demonstrieren, dass Sie Zugriff auf diese Werte haben. Wenn Sie es auswählen, wird Folgendes ausgegeben:
you chose choice 3 which is Option 3
Sie sehen, dass $REPLY
die Zeichenfolge enthalten ist, die Sie an der Eingabeaufforderung eingegeben haben. Es wird als Index für das Array verwendet, ${options[@]}
als ob das Array 1-basiert wäre. Die Variable $opt
enthält die Zeichenfolge aus diesem Index im Array.
Beachten Sie, dass die Auswahlmöglichkeiten eine einfache Liste direkt in der select
Anweisung sein können:
select opt in foo bar baz 'multi word choice'
Sie können eine solche Liste jedoch nicht in eine skalare Variable einfügen, da in einer der Auswahlmöglichkeiten Leerzeichen enthalten sind.
Sie können auch File Globbing verwenden, wenn Sie zwischen folgenden Dateien wählen:
select file in *.tar.gz
seq 10 | fzf
. Der Nachteil ist, dass fzf nicht standardmäßig installiert ist. Sie finden fzf hier: github.com/junegunn/fzf