Cześć,
wziąłem sobie na warsztat skrypty w bashu i mam takie pytanie.
Poniżej wklejam kod skryptu funkcji MAIN_MENU
, który po uruchomieniu wyświetla menu #) <service> gdzie # i <service> to zapytanie z bazy danych.
I to jest logiczne że tyle ile jest usług tyle wyświetli nam pozycji.
Za pomocą case statment chciałem wywołać kolejne funkcje w zależności jaki numer poda użytkownik. Jeżeli poda liczbę z zakresu [1-$SERVICES_NUMBER] to przechodz do funkcji SERVICE. Ale to mi nie działa.
Mam wrażenie, że problem jest w formacie tzn. w range daje 1 - $SERVICES_NUMBER, gdzie $SERVICES_NUMBER to jest string ?
Może mi ktoś podpowiedzieć jak to zrobić poprawnie. Tak, żeby niezależnie od liczby usług zawsze przejść do odpowiedniej funkcji.
MAIN_MENU() {
shopt -s nocasematch
if [[ $1 ]]
then
echo -e "\n$1"
fi
# Available services' list.
AVAILABLE_SERVICES=$($PSQL "SELECT * FROM services")
echo "$AVAILABLE_SERVICES" | while read SERVICE_ID BAR NAME
do
echo "$SERVICE_ID) $NAME"
done
echo "q) quit"
SERVICES_NUMBER=$($PSQL "SELECT COUNT(*) FROM services")
read SERVICE_ID_SELECTED
case $SERVICE_ID_SELECTED in
[1-$SERVICES_NUMBER]) SERVICE ;;
# q) EXIT ;;
*) MAIN_MENU "I could not find that service. What would you like today?"
esac
}