#bash
#bash
Вопрос:
Я не могу получить составные шаблоны, как описано в http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching чтобы соответствовать внутри моего заявления по делу:
i=33; case $i in *([A-Za-z0-9]) ) echo "alphanumeric";; * ) echo "bah";; esac;
Я бы ожидал, что приведенный выше скрипт отобразит «буквенно-цифровой», но вместо этого он завершается с:
bash: syntax error near unexpected token `('
Есть идеи, что не так?
Ответ №1:
Попробуйте включить опцию extglob
оболочки следующим образом:
shopt -s extglob
Затем вы можете использовать расширенные операторы сопоставления с образцом:
i='33'; case $i in *([A-Za-z0-9]) ) echo "alphanumeric";; * ) echo "bah";; esac;
Со справочной страницы:
extglob — если задано, включены расширенные функции сопоставления с образцом, описанные выше в разделе Расширение имени пути.
Комментарии:
1. Работает как шарм, спасибо! Это было прямо у меня перед глазами с самого начала…