if [[ 23ab = *ab ]] ; then echo yes; fi
Понимание разницы между = и = ~ операторы в Баш [[]]Является ли код выше регулярное выражение?
Пожалуйста, смотрите следующее:
if [[ 23ab =~ [0-9]{1,2}ab ]] ; then echo yes; fi
Итак, какая линия является регулярным выражением? Если первая строка не является регулярным выражением, почему она работает, когда мы используем *? Если есть, но когда мы вместо =~
просто используете =
, как if [[ 23ab = [0-9]{1,2}ab ]]
, он не работает прямо сейчас.
Можете ли вы объяснить разницу между двумя линиями?
Я предполагаю, что вы спрашиваете о «bash» здесь; есть несколько разных оболочек, которые работают на Linux, и лучше понять, о чем вы спрашиваете. (POSIX sh не поддерживает '[[]]', поэтому это явно не чистая оболочка POSIX, такая как зола или тире ... но теоретически вы могли бы спрашивать о ksh или zsh или других) , –
Для простоты вы можете использовать этот синтаксис: '[[23ab = * ab]] && echo« yes »' –