「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