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]+$ ]]

관련 정보