Почему нельзя использовать строковые литералы в тестах регулярных выражений bash?

Почему следующий сценарий bash распечатывает только переменная сработала ?

#! /bin/bash

foo=baaz
regex='ba{2}z'

if [[ $foo =~ 'ba{2}z' ]]; then
    echo "literal worked"
fi

if [[ $foo =~ $regex ]]; then
    echo "variable worked"
fi

Есть ли в документации bash что-то, что оператор = ~ работает только с переменные, а не литералы? Применяется ли это ограничение к любым другим операторам?

7
задан CharlesB 12 July 2011 в 14:38
поделиться