我已经执行了下面的代码来检查字段“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]+$ ]]