2013-04-10 54 views
1

我被困在我的bash腳本中的某些東西中,我有一個字符串,組成重複序列20 s,例如, 202020,可能有或多或少的20,例如, 20202020202020,我想創建一個if條件,如果在內部找到任何奇怪的數字,例如30 in 20203020,出現錯誤。Bash中的重複序列

任何想法?

回答

1

本應該做的試驗:

[[ "$var" =~ "^(20)+$" ]] 

檢查:

kent$ [[ "202" =~ "^(20)+$" ]] && echo "y" || echo "n"                              
n 

kent$ [[ "20203" =~ "^(20)+$" ]] && echo "y" || echo "n" 
n 

kent$ [[ "20202002" =~ "^(20)+$" ]] && echo "y" || echo "n"                             
n 

kent$ [[ "20202020" =~ "^(20)+$" ]] && echo "y" || echo "n"                             
y 
+0

這正是我所需要的,非常感謝 – SoCRaT 2013-04-10 14:14:09

0

怎麼樣這個例子中,你能使用嗎?

if [ "`echo "202020302020" | sed -e 's/20//g'`" ]; 
then echo "there is something"; 
fi 
0

擴展模式比正則表達式稍微緊湊一些。

shopt -s extglob 
if [[ $str = +(20) ]]; then 
    echo "twenties" 
else 
    echo "mismatch" 
fi 

在某一點,bash改變對待所有圖案[[...]]表達式作爲延長圖案,所以shopt命令可能不是必要的。