Было изменено между 3,1 и 3,2 . Полагаю, расширенное руководство нуждается в обновлении.
Это краткое описание нового
функции, добавленные в bash-3.2, так как
выпуск bash-3.1. Как всегда,
страница руководства (doc / bash.1) - это место
искать полные описания.
- Новые функции в Bash
чик
е. Цитирование строкового аргумента в
[[command's = ~ operator теперь заставляет
сопоставление строк, как и с другими операторами сопоставления с образцом.
К сожалению, это сломает существующие кавычки с использованием скриптов, если у вас не было понимания хранить шаблоны в переменных и использовать их вместо регулярных выражений. Пример ниже.
$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
$ if [[ $number =~ [0-9] ]]; then echo match; fi
match
$ re="[0-9]"
$ if [[ $number =~ $re ]]; then echo MATCH; fi
MATCH
$ bash --version
GNU bash, version 3.00.0(1)-release (i586-suse-linux)
Copyright (C) 2004 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
match
$ if [[ "$number" =~ [0-9] ]]; then echo match; fi
match