Bash: "[0-9]+$" 正規表現は 3 桁の数字だけ一致しません。

Bash:

「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つの個別の入力が必要なので、スクリプトはまだ非常に非効率的です。必要ありません。ただ1つのステップを実行するだけです。

#!/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

おすすめ記事