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"。 5つ-ne 5の算術不等式をテストします。

テストしたい場合具体的に5桁:

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

関連情報