使用 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 5测试 5 的算术不等式。

如果你想测试具体来说五位数字:

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

bashshell及其正则表达式匹配:

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

使用该expr实用程序(在任何sh类似的 shell 中):

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

相关内容