Описание тега domineering
В bash, канонический ответ: использовать ВАР
$ Рег='^ [0-9]+ $'
$ [[ ' 123 ' =~ $Рег ]]; Эхо $?
Что работает на пробелы, знак и многое другое:
$ Рег='^ 12\3 $'
$ [[ '12\3' =~ $Рег ]]; Эхо $?
0
Если вы хотите оставить его в качестве литерала нужно играть (осторожно) с экранированием.
Вам нужно процитировать частей , которые должны быть буквальным и оставить те части, которые должны интерпретироваться как регулярное выражение ООН,-цитирует. Пространство нуждается в цитировании. Здесь, используя backslah:
$ [[ ' 123 ' =~ \ ^[0-9]+\ $ ]]; Эхо $?
0
И вот, используя двойные кавычки:
$ [[ ' 123 ' =~ ^" "[0-9]+" "$ ]]; Эхо $?
Но это "цитирование" очень грязный с обратной косой чертой:
$ [[ '12\3' =~ ^" "[0-9]+"\\"[0-9]+" "$ ]]; Эхо $?
0
Проще, безопаснее:
$ Рег='^ [0-9]+\\[0-9]+ $'
$ [[ '12\3' =~ $Рег ]]; Эхо $?
0
И, нет, вам не нужно будут делать, что (в скобках в вашем вопросе).
$ Рег='^ [0-9]+\\[0-9]+ $'; [[ '12\3' =~ $Рег ]]; Эхо $?
Да, это может показаться раздражающим. И, да, команду, которую вы представили, случается работать в ЗШ:
$ [[ ' 123 ' =~ '^ [0-9]+ $' ]]; Эхо $?
0
Но цитирование-это всегда проблема (в любой оболочке), что должно произойти, чтобы слеш ?:
% [[ '12\3' =~ '12\3' ]]; Эхо $?
ЗШ: не удалось скомпилировать регулярное выражение: неверный обратная ссылка
1
% [[ '12\3' =~ '^ [0-9]+\\3 $' ]]; Эхо $?
0
Удвоить его !. Это не совсем так: буквальное.