Хорошо, так что я могу придумать два варианта вашей проблемы.Я постараюсь следовать именам ваших переменных.
Как я вижу в вашем коде, вы уже поместили в переменную "string" все имена пользователей, поэтому моя первая идея - использовать чтение ипростое if:
read -P "Insert ALL for all users, the Username for a single user, or Quit to exit: " NAME
if [ $NAME = "ALL" ]
then
clear_cache_all
exit
elif [ $NAME = "Quit" ]
then
echo "Bye!"
exit
else
for i in "${string[@]}"
do
if [ "$i" == "$NAME" ] ; then
clear_cache_user($NAME) #Guessing you'll pass the username as a variable to the function
exit
fi
done
echo "Invalid option, please try again"
fi
Другой вариант - использовать оператор case, как вы использовали.Проблема в том, что case не работает легко с массивами, поэтому, несмотря на то, что это case / in, это не означает, что он проверяет, является ли переменная элементом массива.Если вы вынуждены использовать кейс (или влюблены в него), проверьте следующие две ссылки для некоторых решений: это и это .
Надеждаэто помогает!Удачи!