Предшествуя вашему использованию с shopt -s extglob
, вы можете использовать +([[:upper:]])
для сопоставления строки, состоящей из одной или нескольких заглавных букв.
С man 1 bash
:
If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized. In the following
description, a pattern-list is a list of one or more patterns separated
by a |. Composite patterns may be formed using one or more of the fol‐
lowing sub-patterns:
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
Использованиенапример, +([[:upper:][:digit:] .])
для соответствия одной или нескольким {заглавным буквам, цифрам, пробелам, точкам}. Рассмотрите возможность использования некоторых других следующих классов, определенных в стандарте POSIX:
alnum
alpha
ascii
blank
cntrl
digit
graph
lower
print
punct
space
upper
word
xdigit
Доказательство (просто тест на примере), что оно работает:
shopt -s extglob; case "1A5. .Q7." in (+([[:upper:][:digit:] .])) echo "it works";; esac