这个BASH正则表达式脚本有什么错误?

时间:2015-03-21 05:50:42

标签: regex string bash comparison

我正在尝试创建一个读取n字符串并检查它们是否与正则表达式模式有关的程序:XXXXX1234X其中X是大写字符,{1,2,3,4}是任何数字。据我检查,正则表达式模式是正确的。问题似乎在于字符串的输入和比较。

read n
i=0
declare -a str
while [ $i -lt $n ]
do
    read 'str[$i]'
    i=$((i+1))
done


i=0
while [ $i -lt $n ]
do

    [[ $(str[$i])  =~ ^([A-Z]){5}([0-9]){4}([A-Z]){1}$ ]] && echo YES || echo NO
    i=$((i+1))
done

1 个答案:

答案 0 :(得分:0)

我对您的代码做了一些小修改,我在正则表达式测试中将()替换为{ }

[[ ${str[$i]}  =~ ^...

进行一些测试并且有效:

#!/bin/bash
read n
i=0
declare -a str
while [ $i -lt $n ]
do
    read 'str[$i]'
    i=$((i+1))
done

i=0
while [ $i -lt $n ]
do
    [[ ${str[$i]}  =~ ^([A-Z]){5}([0-9]){4}([A-Z]){1}$ ]] && echo YES || echo NO
    i=$((i+1))
done