皆さん、私はシェルスクリプトのこの式について問題があります:
expr "$VERSION" : "_@[^@]*@"
ここで「@」は何を表しているのか、誰に教えてもらえますか?
それは単なる文字通り@
です。@
正規表現では特別な意味はありませんが、である場合があります$VERSION
。
「アンダースコア、@、0個以上の非@文字、その後に@」と一致します。
差出人man expr
:
expr1 : expr2
The ``:'' operator matches expr1 against expr2, which must be a
regular expression. The regular expression is anchored to the
beginning of the string with an implicit ``^''. expr expects
"basic" regular expressions, see re_format(7) for more informa-
tion on regular expressions.
@
@
正規表現では特別な意味がないため、です。したがって、
expr _@foo@ : "_@[^@]*@"
成功し、出力します6
(一致した文字の数です)。その間
expr _x@foo@ : "_@[^@]*@"
何にも一致しなかっ0
たため、で失敗コードを出力して返します。$?
正規表現に慣れていない場合、例に示されているのは、アンダースコア(_
)の後に2つのアットマーク()が続き、@
任意の数のアットマーク以外の文字を挟んでいることを意味します。