2012-05-01 60 views
0

我有點困惑:如何使用正則表達式在命令行中使用grep以及在bash條件語句中使用完全相同的正則表達式,它根本不工作?來自命令行的正則表達式匹配,與bash腳本不匹配

我想匹配所有隻包含字母的字符串,因此我的正則表達式是: ^[a-zA-Z]\+$

請你幫忙解決這個問題嗎?

下面是從我的bash代碼片斷

if ! [[ "$1" =~ '^[a-zA-z]+$' ]] ; then 
    echo "Error: illegal input string." >&2 
    exit 1 
fi 

回答

2

不要逃避+

這個工作對我來說:

$ [[ "Abc" =~ ^[a-zA-Z]+$ ]] && echo "it matches" 
$ it matches 

而且,你不需要周圍的正則表達式的單引號。對我來說,以下工作:

if ! [[ "$1" =~ ^[a-zA-z]+$ ]] ; then 
    echo "Error: illegal input string." >&2 
    exit 1 
fi 
+0

這裏有一個片段從我的程序 '如果! [[「$ 1」=〜'^ [a-zA-z] + $']];然後 \t回顯「錯誤:非法輸入字符串」。 >&2 \t exit 1 fi' – haunted85

+3

刪除正則表達式中的單引號。 – dogbane

+0

問題依然存在。 – haunted85