Как часть bash-скрипта, я пытаюсь создать фильтр, который выходит из скрипта при передаче неверного имени файла:
if [[ ! $1 =~ [^DCS-932L20\d{14}(\.[jJ][pP][gG])$] ]]; then
echo "'$1' is not a valid name"
exit 1
fi
При тестировании RegEx в отладчике он соответствует правильной строке,например: DCS-932L2019110607132405.jpg
Но при реализации в bash-скрипте оператор IF всегда возвращает true
Когда я сокращаю RegEx до [^DCS-]
, все кажется работающим, нодобавление только '9' ([^DCS-9]
) достаточно, чтобы оператор снова возвращал true
Я пытался убежать ([^DCS\-9]
или [^DCS-\9]
)
Iпопробовал цитаты (["^DCS-9"]
или ['^DCS-\9']
)
И я попробовал их комбинации.
Я довольно новичок и в bash, и в RegEx, так что если кто-то может объяснить, что не такЯ буду благодарен