每一個,我有一個關於在shell腳本這種表達的問題:
_ @ [^ @ * @在bash
expr "$VERSION" : "[email protected][^@]*@"
誰能告訴我這是什麼 「@」 代表這裏?
每一個,我有一個關於在shell腳本這種表達的問題:
_ @ [^ @ * @在bash
expr "$VERSION" : "[email protected][^@]*@"
誰能告訴我這是什麼 「@」 代表這裏?
從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 [email protected]@ : "[email protected][^@]*@"
會成功,並輸出6
(它是匹配字符的數量);而
expr [email protected]@ : "[email protected][^@]*@"
將輸出0
和$?
返回失敗代碼,因爲它不能匹配任何東西。
如果您對正則表達式不熟悉,則示例中給出的意思是:下劃線(_
)後面夾着任意數量的非符號字符後面的兩個符號(@
)。
這只是一個文字@
。 @
在正則表達式中沒有特殊含義,雖然它可能在$VERSION
。
匹配「下劃線後跟@,後跟零個或多個非@字符後跟@」。
我試了一些測試,那是真的。謝謝〜! – krime 2013-02-20 04:09:31
感謝您的長時間解釋,我試圖從正則表達式引用中找到'@',但失敗。它似乎只是$ VERSION號碼的驗證,這沒有意義... – krime 2013-02-20 04:36:24
@krime:只是補充一點,'[^ @] *'意味着「更多字符是零*不是* @」。 – cdarke 2013-02-20 11:45:43