我一直在寫一點bash腳本來幫助經驗較少的Linux用戶使用一些命令。有一件事似乎在逃避我,並且在爲if語句做模式匹配時使用大括號。Bash shell if語句與花括號匹配正則表達式{}
regex="[A-Za-z0-9]/{5/}"
if [[ $2 =~ $regex ]]
then
num=$2
else
echo "Invalid entry"
exit 1
fi
這應該捕獲任何A-Z,a-z或0-9,如果不是5個字符,它應該是正確的?
我試過很多次,許多變化,許多報價,有和沒有逃脫......似乎沒有什麼是工作:
+ regex='[A-Fa-f0-9]/{5/}'
+ [[ abcd1 =~ [A-Za-z0-9]/{5/} ]]
+ echo 'Invalid entry'
任何想法我失蹤?
GNU bash, version 3.2.39(1)-release
我有。我嘗試了幾十種變化。有和沒有正則表達式在變量中: regex =「[A-Fa-f0-9] \ {5 \}」 regex =「[A-Fa-f0-9] \ {5}」 正則表達式=「[A-Fa-f0-9] {5}」 [[$ 2 =〜[A-Fa-f0-9] \ {5 \}]] 與上面相同的正則表達式+似乎沒有任何工作。任何其他方式來檢查$ 2是5個字符? – Colin