#!/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 breakAnweisungen hinzu, wo immer Sie die selectSchleife zum Beenden benötigen . Wenn a breaknicht ausgeführt wird, wird die selectAnweisung wiederholt und das Menü erneut angezeigt.
In der dritten Option habe ich Variablen eingefügt, die durch die selectAnweisung 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 $REPLYdie 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 $optenthält die Zeichenfolge aus diesem Index im Array.
Beachten Sie, dass die Auswahlmöglichkeiten eine einfache Liste direkt in der selectAnweisung 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