2016-07-25 67 views
1

我需要的,如果提供給腳本的第一個參數的glob模式,這在JavaScript的RegExp我會表達爲檢查bash腳本參數,並且在替換字符它

^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$ 
匹配寫一個bash腳本來檢查

換言之:以一個或多個字母/數字開頭,後面跟着一個句點,後跟兩個或更多個字母,結束。其他一切都應該通過測試。

然後我還需要用下劃線替換參數中的句點。

到目前爲止,我可以檢查參數爲空:

case $1 in 
    '') echo "No argument supplied" >&2; exit 1 ;; 
esac 

我的數字模式測試將需要被否定,並在這種情況下,聲明''檢查後說,但我不知道如何構建它。任何直接的幫助或在線資源將不勝感激。

我還想要如何改變提供的有效參數以便用下劃線替換單個句點。

回答

2

同樣的正則表達式在BASH中也有效。考慮這個片段:

re='^[a-zA-Z0-9]+\.[a-zA-Z]{2,}$' 
s='abc123.xy' 

[[ $s =~ $re ]] && echo "${s/./_}" 
abc123_xy 
+1

欣賞。我能夠刪除case語句並將其替換爲'if [[$ 1 =〜$ re]];然後替換爲=「$ {1 /./_}」else echo「參數爲空或無效」&& exit 1 fi' – Sidd