2014-03-27 67 views
0

我正在學習Linux命令行,並遇到了一個正常表達式,讓我難住。基本的Linux正則表達式

有人可以通過這個並解釋它做什麼請。我知道這第一部分爲read,如果沒有提供,將使用REPLY作爲變量。

read -p "Enter a single item > " 

# is input a valid filename? 
if [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]]; then 
     echo "'$REPLY' is a valid file name." 

就像爲什麼是[ - 在那裏?是否檢查$ REPLY的開頭是否是破折號?任何幫助,將不勝感激。

回答

3

表達式爲:

^   -- Start of the string 
[   -- Character class start 
-   -- A literal dash 
[:alnum:] -- POSIX-style alphanumeric (a-z, 0-9) 
.   -- A literal period 
_   -- A literal underscore 
]   -- End character class 
+   -- One or more of anything in the character class 
$   -- End of the string 

-是文字破折號。它在字符類的開始處,因此它不被解釋爲類範圍。例如,[a-c]a, b, c,但[-ac]-, a, c


順便說一句,這是一個文件名不完整的檢查。據我所知,文件名可以包含除目錄分隔符以外的任何字符(例如/) - 任何數量的空格和換行符。

+0

啊,謝謝你我現在明白了,這很簡單。 –