2013-12-19 190 views
2

我一直試圖在bash腳本中創建一個條件,它會告訴我給定的字符串是否包含字母或連字符以外的字符。如何檢查一個字符串是否包含特定字符

即,這是合法的字符串:hello-world

,那種是不是:hello-123-there

這是我到目前爲止已經試過,但我想我也有一個邏輯錯誤:

if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then 
     echo "the line is bad" 
     exit 
fi 

(當然,$ 1指的是字符串)。 很想得到你的幫助。

回答

3

你可以使用bash的正則表達式的特點:

[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid" 

或使用水珠:

[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid" 

這是一樣的:

if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then 
    echo "valid" 
else 
    echo "invalid" 
fi 
+0

感謝,但 - 我不明白「 &&「和」||「 usgae,你可以寫下條件嗎?謝謝。 –

+0

檢查更新後的答案。 – anubhava

+0

這是你在找什麼? – anubhava

相關問題