Bash:“[0-9]+$”正则表达式无法仅匹配 3 位数字

Bash:“[0-9]+$”正则表达式无法仅匹配 3 位数字

我已经执行了下面的代码来检查字段“eid”的长度是否为 3 位数字并且全部都是数字 -

#!/usr/bin/bash

input="A01#PoonamSahani#IVS#123456"

#recCount=`echo $input | awk -F "#" '{print NF}'`

eid=`echo $input | cut -d "#" -f 1`
ename=`echo $input | cut -d "#" -f 2`
dept=`echo $input | cut -d "#" -f 3`
salary=`echo $input | cut -d "#" -f 4`

if [[ ${#eid} == 3 && $eid =~ [0-9]+$ ]]
then
        echo "$eid"
else
        echo "Check"
fi

执行后得到以下输出 -

root@ip-xx-xx-xx-xx:~# ./3ex.sh 
A01

请告知这里缺少什么?

答案1

您已经找到了更好的方法,但您的脚本仍然非常低效,因为它需要单独操作输入 4 次。没有必要,您只需一步即可完成:

#!/usr/bin/bash

input="A01#PoonamSahani#IVS#123456"

read -d '#' eid ename dept salary <<<"$input"

if [[ ${#eid} == 3 && $eid =~ ^[0-9]+$ ]]
then
        echo "$eid"
else
        echo "Check"
fi

答案2

我需要^在一开始就使用:

if [[ ${#eid} == 3 && $eid =~ ^[0-9]+$ ]]

相关内容