Eu não sou especialista em expressões regulares, mas isso funciona, pelo menos pelo que você descreveu.
#!/bin/sh
argument="$1"
#if [[ $argument =~ [a-zA-Z]*5\.0\.3[a-zA-Z]+ ]]; then# only works on bash
if echo $argument | egrep -q '[a-zA-Z]*5\.0\.3[a-zA-Z]+'; then
#echo "Found: ${BASH_REMATCH[0]}" # for bash
echo "Match Found"
# you can check for $argument at some other location, here.
else
echo "No match"
fi
Salvando-o como test
e executando-o, apresenta os seguintes resultados:
bash test 333xxxx5.0.3xxxxx777
Match Found
bash test 333xxxx5.0.2xxxxx777
No match
bash test 5.0.3xxxxx777
Match Found
bash test 5.0.2xxxxx777
No match
Você pode adicionar ^
no início e $
no final, para corresponder à sequência completa ou nada. Assim ^[a-zA-Z]*5\.0\.3[a-zA-Z]+$