Bash 4 1條件正規表示式與3 1的改變之處

2021-06-11 05:25:46 字數 801 閱讀 2469

工作中,同一指令碼在bash 3.1下執行成功,但在4.1環境下失敗。

f.  quoting the string argument to the [[ command's  =~ operator now forces

string matching, as with the other pattern-matching operators.

引用會把正規表示式直接看作字串:

[vimos@vimos 015 bash]$ [[ "hello" =~ "^([[:upper:]][[:lower:]]*$)" ]] && echo match || echo no

no[vimos@vimos 015 bash]$ [[ "hello" =~ ^([[:upper:]][[:lower:]]*$) ]] && echo match || echo no

match

[vimos@vimos 015 bash]$ [[ "^([[:upper:]][[:lower:]]*$)" =~ "^([[:upper:]][[:lower:]]*$)" ]] && echo match || echo no

match

當前有兩種處理方式,可以解決這個問題:

[vimos@vimos 015 bash]$ reg="^([[:upper:]][[:lower:]]*$)";[[ "hello" =~ $reg ]] && echo match || echo no

match

bash正規表示式

1.1 正規表示式 正規表示式 regular expression 是一種字元模式 pattern 用來匹配字串中的子串。例如 ro t 可以匹配 root rooot等 ro t 可以匹配 rot root rooot等1.1 正規表示式元字元 元字元是具有特殊含義的字元,不同於字元表面的含義。...

bash正規表示式

星號 匹配它前面的字串或正規表示式任意次 包括0次 比如 1122 可能匹配的字串有 112 1122 1122222 1123131231 句號.匹配除換行符之外的任意乙個字元。比如 112.將匹配112 至少乙個字元 可能匹配的字串有 1121 1122 112abc 1123131231 但不...

正規表示式 學習筆記4 1

徒弟 前面幾節課跟師傅學習了 字元組,括號的作用 還有什麼呢?師傅 還有好多呀,例如錨點!問題引出 public class generalone else 執行結果 找到 cat 判斷句子中是否存在cat 的單詞。那麼我們查詢的是cat 這個子字串,還是 cat這個單詞 為了驗證這一點,我們在t ...