我正在向現有腳本添加一項功能,以允許用戶配置Linux系統的主機名。是我在強制執行規則如下:如何確保Bash字符串是字母數字,沒有下劃線?
- 必須長
- 不能同時啓動或用連字符
- 只能包含字母數字字符和連字符結束2到63個字符之間;所有其它字符不允許(包括下劃線,這意味着我不能使用\ W正則表達式符號)
我已經解決了該列表中的前兩個,但我無法找出如何檢查一個bash字符串是否只包含字母,數字和連字符。我想我可以用一個正則表達式來做這件事,但我很難弄清楚(我過去的一小時在網上搜索和閱讀手冊頁)。
我可以使用sed,grep或任何其他標準工具,但不能使用Perl或Python。
如何使用第二個表達式使用grep辦呢?我正在尋找手冊頁中的開關,但沒有成功:我回應一個應該匹配的字符串,並且沒有輸出。 – 2009-08-04 19:42:36
@Montecristo:'grep -E'或'egrep' – Welbog 2009-08-04 19:51:35
我試過了:echo 1asdas * _- | grep -E'^ [[:alnum:]] [ - [:alnum:]] {0,61} [[:alnum:]] $',沒有輸出(也沒有單引號),大聲笑我應該問一個問題我認爲...:P – 2009-08-04 20:07:27