Bash 4 в Linux ~
У меня есть массив возможных значений. Я должен ограничить ввод данных этими значениями.
Arr=(hello kitty goodbye quick fox)
Пользователь указывает значение в качестве аргумента скрипта:
bash myscript.sh -b var
В настоящее время я пытаюсь сделать следующее:
function func_exists () {
_var="$1"
for i in ${Arr[@]}
do
if [ "$i" == "$_var" ]
then
echo hooray for "$_var"
return 1
fi
done
return 0
}
func_exists $var
if [ $? -ne 1 ];then
echo "Not a permitted value."
func_help
exit $E_OPTERROR
fi
Кажется, что работает нормально, есть ли лучшие методы для проверки ввода пользователя с массивом допустимых значений?
ОБНОВЛЕНИЕ: мне нравится ответ Джона К. ... может кто-нибудь прояснить использование $ @? Я понимаю, что это представляет все позиционные параметры - поэтому мы удаляем первый параметр из стека, а $ @ теперь представляет все остальные параметры, которые являются переданным массивом ... это правильно? Я ненавижу слепо использовать код, не понимая ... даже если он работает!