select
- select – konstrukcja powłoki bash umożliwiająca łatwe tworzenie prostych menu tekstowych.
- Pozwala na iteracyjne prezentowanie listy opcji i przypisywanie wyboru do zmiennej.
- Przydatne w interaktywnych skryptach i narzędziach CLI.
Składnia
Dział zatytułowany „Składnia”select zmienna in lista_do_wyborudo polecenia [break]done
- Wyświetla menu z numerami opcji, odczytuje wybór użytkownika i przypisuje go do zmiennej.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
zmienna | Nazwa zmiennej, w której zostanie zapisany wybrany element listy. |
lista_do_wyboru | Elementy prezentowane użytkownikowi jako opcje. |
PS3 | Zmienna powłoki zawierająca komunikat zachęty do wyboru. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 1) Proste menu wyboruPS3="Wybierz owoc: "select owoc in jabłko banan pomarańcza do echo "Wybrałeś: $owoc" break done
# 2) Menu z obsługą niewłaściwego wyboruPS3="Twoja opcja: "select opcja in Start Stop Wyjściedo case $opcja in Start) echo "Uruchamianie..." ;; Stop) echo "Zatrzymywanie..." ;; Wyjście) break ;; *) echo "Nieprawidłowy wybór" ;; esacdone
- select jest wbudowaną konstrukcją bash, więc nie działa w sh lub innych prostszych powłokach.
- Zmienna
REPLY
przechowuje numer wybranej opcji. - Aby zakończyć menu, zwykle używa się
break
lubexit
.
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
Brak wyświetlania menu | Uruchomiono w powłoce bez select | Użyj basha (#!/bin/bash ). |
Zmienna pusta po wyborze | Wybrano numer spoza zakresu | Dodaj obsługę domyślnego przypadku w case . |
Nieczytelne menu | Brak ustawionego PS3 | Ustaw przyjazny komunikat zachęty. |