if else 사용 중 오류 발생

if else 사용 중 오류 발생
if [[ wc[$clientID] != 5 ]];
then
    print "Client id entered is incorrect"

else
    print "\n" 
    print "1. QA "  
    print "2. QC " 
fi

실수

./ERMS.sh[16]: syntax error at line 64 : `newline or ;' unexpected

답변1

~에 따르면논평, wc[$clientID]계산에 사용하려는 문자 수입니다 $clientID. 그것은 이것이 하는 일이 아닙니다.

대신에:

if [ "${#clientID}" -ne 5 ]; then
    # denied
else
    # ok
fi

확장은 ${#variable}길이인 정수를 반환합니다 "$variable". 우리는 -ne 55의 산술 부등식을 테스트합니다.

테스트하고 싶다면구체적으로다섯 자리:

case $clientID in
    [0-9][0-9][0-9][0-9][0-9])
        # ok
        ;;
     *)
        # denied
esac

쉘 및 bash해당 정규식과 일치합니다.

if [[ "$clientID" =~ ^[0-9]{5}$ ]]; then
    # ok
else
    # denied
fi

다음 expr유틸리티를 사용하십시오(유사한 쉘에서 sh):

if expr "$clientID" : '^[0-9]\{5\}$' >/dev/null; then
    # ok
else
    # denied
fi

관련 정보