2016-03-02 112 views

回答

1

NO *表示0或更多,所以空字符串會匹配,添加一個強制M或使用+而不是*,它會做你想做的。

你的測試應該看起來像:

[[ $testvar =~ ^MM* ]] && echo "foo" 

[[ $testvar =~ ^M+ ]] && echo "foo" 
+0

謝謝。我得到了'+'解決方案,但是如何使'M'成爲強制性的?「? – pkaramol

+0

在M *之前加上一個M,因此MM *你可以在其中放置任何字母,但在你的情況下,該模式以M字符開頭,然後M *表示零個或多個M字符:) – Rob

0

爲了配合開始M一個字符串,你有兩個選擇:

[[ $testvar = M* ]] # use glob pattern matching 

[[ $testvar =~ ^M ]] # use a regular expression 

的關鍵問題,您的嘗試是,你已經p直接在M之後的*,該M在字符串的開始處匹配零個或更多個Ms(即,任何東西)。我使用的模式在開始時匹配任何帶有M的字符串。