string=123456
if [ $string == 123456 ]; then
echo 123
fi
Это работает нормально, но если я изменяю == на = ~, я получаю эту ошибку:
./test: line 3: [: =~: binary operator expected
bash
shell-script
Lumify
источник
источник
=~
в этом случае неправильно.=~
сравнивает скороговорку (левая сторона задания) с регулярным выражениемregex
на правой стороне задания. Регулярное выражение в его простейшей форме передается как'[0-9][0-9]'
123456
является действительным REОтветы:
Bash «S регулярное выражение соответствие работает только в двойных квадратных скобках
[[ ... ]]
:источник
[[ ... ]]
, поскольку там не происходит разбиение слов или расширение пути. Они нужны только при использовании одинарных скобок[ ... ]
(с обеих сторон) и справа от выражения с двойными скобками.