Я хочу проверить, есть ли у переменной действительный год, используя регулярное выражение. Чтение руководства по bash я понимаю, что могу использовать оператор = ~
Глядя на пример ниже, я ожидал увидеть «не в порядке», но я вижу «нормально». Что я делаю неправильно?
i="test"
if [ $i=~"200[78]" ]
then
echo "OK"
else
echo "not OK"
fi
regex
bash
conditional
идрозид
источник
источник
=~
.Ответы:
Он был изменен между 3.1 и 3.2:
Так что используйте его без кавычек так:
i="test" if [[ $i =~ 200[78] ]] ; then echo "OK" else echo "not OK" fi
источник
a +b
оно сообщит о синтаксической ошибке ...a\ \+b
чтобы избежать пробела и символа плюса.Вам нужны пробелы вокруг оператора = ~
источник