1

我在我的 bash 脚本中遇到了一些问题,我有一个字符串,它由重复的20s 序列组成,例如202020,可能有更多或更少20的 s,例如20202020202020,我想创建一个 if 条件,如果找到任何奇怪的数字在里面,例如30in 20203020,给出一个错误。

有任何想法吗?

4

3 回答 3

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
于 2013-04-10T13:27:31.540 回答
0

这个例子怎么样,你能用吗?

if [ "`echo "202020302020" | sed -e 's/20//g'`"  ]; 
then echo "there is something"; 
fi
于 2013-04-10T13:31:30.617 回答
0

扩展模式比正则表达式更紧凑一点。

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

在某些时候,bash更改为将[[...]]表达式中的所有模式视为扩展模式,因此该shopt命令可能不是必需的。

于 2013-04-10T13:38:55.240 回答