Przejdź do głównej zawartości

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.

Okno terminala
select zmienna in lista_do_wyboru
do
polecenia
[break]
done
  • Wyświetla menu z numerami opcji, odczytuje wybór użytkownika i przypisuje go do zmiennej.

ParametrOpis
zmiennaNazwa zmiennej, w której zostanie zapisany wybrany element listy.
lista_do_wyboruElementy prezentowane użytkownikowi jako opcje.
PS3Zmienna powłoki zawierająca komunikat zachęty do wyboru.

Okno terminala
# 1) Proste menu wyboru
PS3="Wybierz owoc: "
select owoc in jabłko banan pomarańcza
do
echo "Wybrałeś: $owoc"
break
done
Okno terminala
# 2) Menu z obsługą niewłaściwego wyboru
PS3="Twoja opcja: "
select opcja in Start Stop Wyjście
do
case $opcja in
Start) echo "Uruchamianie..." ;;
Stop) echo "Zatrzymywanie..." ;;
Wyjście) break ;;
*) echo "Nieprawidłowy wybór" ;;
esac
done

  • 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 lub exit.

Błąd / KomunikatPrzyczynaRozwiązanie
Brak wyświetlania menuUruchomiono w powłoce bez selectUżyj basha (#!/bin/bash).
Zmienna pusta po wyborzeWybrano numer spoza zakresuDodaj obsługę domyślnego przypadku w case.
Nieczytelne menuBrak ustawionego PS3Ustaw przyjazny komunikat zachęty.