我被困在我的bash腳本中的某些東西中,我有一個字符串,組成重複序列20
s,例如, 202020
,可能有或多或少的20
,例如, 2020
或2020202020
,我想創建一個if條件,如果在內部找到任何奇怪的數字,例如30
in 20203020
,出現錯誤。Bash中的重複序列
任何想法?
我被困在我的bash腳本中的某些東西中,我有一個字符串,組成重複序列20
s,例如, 202020
,可能有或多或少的20
,例如, 2020
或2020202020
,我想創建一個if條件,如果在內部找到任何奇怪的數字,例如30
in 20203020
,出現錯誤。Bash中的重複序列
任何想法?
本應該做的試驗:
[[ "$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
怎麼樣這個例子中,你能使用嗎?
if [ "`echo "202020302020" | sed -e 's/20//g'`" ];
then echo "there is something";
fi
擴展模式比正則表達式稍微緊湊一些。
shopt -s extglob
if [[ $str = +(20) ]]; then
echo "twenties"
else
echo "mismatch"
fi
在某一點,bash
改變對待所有圖案[[...]]
表達式作爲延長圖案,所以shopt
命令可能不是必要的。
這正是我所需要的,非常感謝 – SoCRaT 2013-04-10 14:14:09