4

皆さん、私はシェルスクリプトのこの式について問題があります:

expr "$VERSION" : "_@[^@]*@"

ここで「@」は何を表しているのか、誰に教えてもらえますか?

4

2 に答える 2

1

それは単なる文字通り@です。@正規表現では特別な意味はありませんが、である場合があります$VERSION

「アンダースコア、@、0個以上の非@文字、その後に@」と一致します。

于 2013-02-20T03:53:13.747 に答える
1

差出人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つのアットマーク()が続き、@任意の数のアットマーク以外の文字を挟んでいることを意味します。

于 2013-02-20T03:55:40.557 に答える