2014-10-20 42 views
-2

我有一個if語句(它測試一個變量(test)是否具有某個值),然後該變量將一個值賦給一個新變量(result)關於if聲明的結果。其中一個值必須是一個正則表達式,它將把下一個項目匹配成一個字母(a-z,A-Z)。shell腳本 - 根據if語句的結果將變量賦值給一個變量

if [ "$test" -eq "0" ] // if test = 0 
then 
    result="^[a-zA-Z\-]" 
fi 

什麼是正則表達式,我將如何分配它(不知道我是否正確地分配它)?

謝謝:)

編輯:它會在一個句子中使用狀結構,e.g The next character needs to be a letter:result將確保下一個字符是字母。

+1

你如何使用'$ result'變量你的代碼的其餘部分? – anubhava 2014-10-20 20:35:28

+0

在這種情況下,它將用於匹配一個句子(例如,下一個字符應該是一個字母,'result'將確保下一個字符是一個字母)。我無法真正顯示代碼,對不起。 你也知道爲什麼這得到了downvoted兩次? – 2014-10-20 21:12:34

+0

不知道是誰和爲什麼低估了它。但我認爲這可能是因爲問題不是很清楚,沒有示例價值。例如首先,你寫**正則表達式只匹配小寫字母**,現在這個:**結果將確保下一個字符是一個字母)** – anubhava 2014-10-20 21:17:41

回答

0

擊沒有任何方法來存儲不是作爲一個字符串的正則表達式,所以是的,它只是普通字符串賦值,就像這樣:

if next_input_must_start_with_a_letter; then 
    regex='^[[:alpha:]]' 
else 
    regex='' # always match unconditionally 
fi 

read -r input 
if ! [[ $input =~ $regex ]]; then 
    echo "Input did not match regex!" >&2 
fi 
+0

這個作品,謝謝! :) – 2014-10-22 11:16:27