У меня есть некоторое регулярное выражение, которое ведет себя странно в моем сценарии оболочки. У меня есть переменные, и я пробовал каждый способ заставить их вести себя, и они, похоже, не делают никакого регулярного выражения, и я знаю свое регулярное выражение достаточно хорошо благодаря regex101, вот что образец выглядитshell script odd regex
fname="direcheck"
FIND="*"
if [[ $fname =~ $FIND ]]; then
echo "no quotes"
fi
if [[ "$fname" =~ "$FIND" ]]; then
echo "with quotes"
fi
сейчас он не покажет ничего , если я изменю найти в
FIND="[9]*"
тогда не печатает без кавычек , если я говорю
FIND="[a-z]*"
тогда не печатает без кавычек
если я говорю
FIND="dircheck"
тогда ничего не печатает
если я говорю
FIND="*ck"
тогда ничего не печатает
Я не понимаю, как это регулярное выражение работает
как я использовать эти переменные, и что такое правильный синтаксис?
@ ritesht93: Да, 1-й пункт. Глобусы '==', регулярные выражения '= ~'. – Amadan
также не смешивать 'glob' и' = ~ 'regex – ritesht93
Строго говоря,' * 'является * правильным * регулярным выражением; он соответствует строке, содержащей звездочку. Без маркера для изменения звездочка теряет свое особое значение как квантификатор и становится просто звездочкой. Например, 'printf 'one * \ ntwo \ n' | grep '*' '. – ghoti