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